参考大神的,改了改 贪心或者说是dfs,只要不超时,应该全AC
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int res = 0x7fffffff;
void dfs(vector<int> v, int money, int k, int n)
{
if (money == 0)
{
res = res>k?k:res;
return;
}
if (money < 0 || n < 0 || k > res)
return;
for (int i = money / v[n]; i >= 0; i--)
dfs(v, money - i * v[n], k + i, n - 1);
}
int main()
{
int n;
vector<int> v;
int money;
while (cin >> n)
{
v.push_back(n);
}
money = v[v.size() - 1];
v.pop_back();
sort(v.begin(), v.end());
int days = 0;
dfs(v, money, 0, v.size()-1);
if (res == 0x7fffffff)
res = -1;
cout << res;
//system("pause");
return 0;
}