确实是 找钱问题,参考了下,感觉现在应该没问题,好像还不用排序。 #include<iostream> #include<vector> #include<algorithm> using namespace std; 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 length = v.size(); int *days = new int[money + 1]; int *value = new int[money + 1]; days[0] = 0; for (int i = 1; i <= money; i++) { int min = i; int used = 0; for (int j = 0; j < length; j++) { if (i >=v[j]) { if (days[i - v[j]] + 1 <= min && (i == v[j] || value[i - v[j]] != 0)) { min = days[i - v[j]] + 1; used = v[j]; } } } days[i] = min; value[i] = used; } if (value[money] == 0) cout << -1 << endl; else cout << days[money] << endl; //system("pause"); return 0; }
点赞 评论

相关推荐

投递腾讯等公司8个岗位
点赞 评论 收藏
转发
牛客网
牛客企业服务