【PAT甲级】1068. Find More Coins (30)
2017-06-21 17:18
330 查看
#include <stdio.h> #include <algorithm> #include <vector> using namespace std; #define MAX_N 10000 #define MAX_M 100 bool cmp(int a, int b) { return a > b; } int main(int argc, char *argv[]) { int n, m; scanf("%d %d", &n, &m); int *w = new int[n + 1]; for (int i = 0; i < n; i++) { scanf("%d", &w[i]); } sort(w, w + n, cmp); int d[MAX_M + 1]; int set[MAX_N + 1][MAX_M + 1]; for (int i = 0; i < n; i++) { for (int j = m; j >= w[i]; j--) { if (d[j] <= d[j - w[i]] + w[i]) { d[j] = d[j - w[i]] + w[i]; set[i][j] = 1; } } } if (d[m] < m) printf("No Solution\n"); else { vector<int> v; int i = n - 1; int j = m; while (j > 0) { if (set[i][j] == 1) { v.push_back(w[i]); j = j - w[i]; } i--; } for (i = 0; i < v.size(); i++) { if (i > 0) printf(" "); printf("%d", v[i]); } printf("\n"); } return 0; }
相关文章推荐
- 1068. Find More Coins (30)-PAT甲级真题(01背包)
- 1034. Head of a Gang (30)-PAT甲级真题(图的遍历dfs)
- PAT甲级 1111. Online Map (30)
- PAT 甲级 1131. Subway Map (30)
- PAT - 甲级 - 1018. Public Bike Management (30)(Dijkstra+DFS)
- PAT甲级题解-1123. Is It a Complete AVL Tree (30)-AVL树+满二叉树
- 【PAT甲级】1038. Recover the Smallest Number (30)
- 【PAT甲级】1045. Favorite Color Stripe (30)
- PAT(甲级)-1014. Waiting in Line (30)
- PAT(甲级)1022. Digital Library (30)
- PAT 甲级 1030. Travel Plan (30)
- pat甲级1014. Waiting in Line (30)
- PAT 甲级 1014. Waiting in Line (30)
- PAT 甲级 1038. Recover the Smallest Number (30)
- 1076. Forwards on Weibo (30)-PAT甲级真题(图的遍历bfs)
- PAT - 甲级 - 1099. Build A Binary Search Tree (30)(二叉搜索树+层次遍历+中序遍历)
- PAT甲级.1064. Complete Binary Search Tree (30)
- 1095. Cars on Campus (30)-PAT甲级真题(map,排序)
- 1072. Gas Station (30) PAT 甲级
- pat 甲级 1099. Build A Binary Search Tree (30)