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

相关推荐

牛客网
牛客企业服务