1068. Find More Coins (30)解题报告
2016-11-03 23:00
239 查看
#define _CRT_SECURE_NO_WARNINGS #include <cstdio> #include <cstdlib> #include <iostream> #include <algorithm> using namespace std; const int N = 10010; const int M = 110; bool comp(int i1, int i2); bool choice [M] = { { false } }, flag = { false }; int c = { 0 }, dp[M] = { 0 }; int main(void) { int n, m, i, j, num; scanf("%d %d", &n, &m); for (i = 1; i <= n; i++) { scanf("%d", c + i); } sort(c + 1, c + n + 1, comp); for (i = 1; i <= n; i++) { for (j = m; j >= c[i]; j--) { if (dp[j] <= dp[j - c[i]] + c[i]) { dp[j] = dp[j - c[i]] + c[i]; choice[i][j] = true; } } } if (dp[m] != m) { puts("No Solution"); } else { j = m; num = 0; for (i = n; i > 0; i--) { if (choice[i][j]) { flag[i] = true; num++; j -= c[i]; } } for (i = n; i > 0; i--) { if (flag[i]) { printf("%d", c[i]); num--; if (num) { putchar(' '); } } } putchar('\n'); } return 0; } bool comp(int i1, int i2) { return i1 > i2; }
相关文章推荐
- [leetcode] 30. Substring with Concatenation of All Words 解题报告
- [Leetcode] 30. Substring with Concatenation of All Words 解题报告
- PAT (Advanced Level) 1038. Recover the Smallest Number (30) 解题报告
- 1087. All Roads Lead to Rome (30)解题报告
- Integer Factorization (30)解题报告
- 1115. Counting Nodes in a BST (30)解题报告
- PAT 解题报告 1004. Counting Leaves (30)
- 1080. Graduate Admission (30)解题报告
- PAT (Advanced Level) 1127. ZigZagging on a Tree (30) 解题报告
- 1076. Forwards on Weibo (30)解题报告
- 1091. Acute Stroke (30)解题报告
- 1123. Is It a Complete AVL Tree (30)解题报告
- PAT (Advanced Level) 1004. Counting Leaves (30) 解题报告
- 1095. Cars on Campus (30)解题报告
- 1119. Pre- and Post-order Traversals (30)解题报告
- 1049. Counting Ones (30)解题报告
- RQNOJ 30 愚蠢的矿工 解题报告
- PAT (Basic Level) Practise(中文)----30题解题报告
- 1107. Social Clusters (30)解题报告
- 1045. Favorite Color Stripe (30)解题报告