参考大神的,改了改    贪心或者说是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;
}