UVA_11517_Exact Change

来源:互联网 发布:淘宝删除邀请我的回答 编辑:程序博客网 时间:2024/06/06 19:07
#include<iostream>#include<sstream>#include<string>#include<vector>#include<list>#include<set>#include<map>#include<stack>#include<queue>#include<algorithm>#pragma warning(disable:4996)#include<cstdio>#include<cstdlib>using std::cin;using std::cout;using std::endl;using std::stringstream;using std::string;using std::vector;using std::list;using std::pair;using std::set;using std::multiset;using std::map;using std::multimap;using std::stack;using std::queue;using std::priority_queue;int main(){//freopen("input.txt", "r", stdin);  //freopen("output.txt", "w", stdout);  int T;while (cin >> T){while (T--){int price; cin >> price;int n; cin >> n;vector<int>coin(n+1);int m = 0;for (int i = 1; i <= n; i++){cin >> coin[i];m += coin[i];}vector<vector<int>>dp(n + 1, vector<int>(m + 1));for (int i = 0; i <= n; i++){for (int j = 1; j <= m; j++){dp[i][j] = 1000000000;}}for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){dp[i][j] = dp[i-1][j];if (j >= coin[i]){dp[i][j] = std::min(dp[i][j], dp[i - 1][j - coin[i]] + 1);}}}for (int i = price; i <= m; i++){if (dp[n][i] != 1000000000){cout << i << ' ' << dp[n][i] << endl;break;}}}}return 0;}

0 0
原创粉丝点击