uva 624 CD (0-1背包打印路径)
2012-07-28 20:21
417 查看
#include <cstdio> #include <cstdlib> #include <cstring> #include <vector> using namespace std; const int inf = 1000000; #define N 1000000 int dp[22] ; int a[22]; int n, t; void printf_path(vector<int>& v, int c) { for (int i = t; i > 0; i--) if (dp[i - 1][c] != dp[i][c]) { v.push_back(i); c -= a[i]; } for (int i = v.size() - 1; i >= 0; i--) printf("%d ", a[v[i]]); } int main() { while (scanf("%d", &n) != EOF) { scanf("%d", &t); for (int i = 0; i <= n; i++)dp[0][i] = 0; for (int i = 1; i <= t; i++) { scanf("%d", a + i); } for (int i = 1; i <= t; i++) { for (int j = 1; j < a[i]; j++)dp[i][j] = dp[i -1][j]; for (int j = a[i]; j <= n; j++) { dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - a[i]] + a[i]); } //for (int k = 0; k <= n; k++)printf("%d ", dp[i][k]);puts(""); } vector<int> v; printf_path(v, dp[t] ); printf("sum:%d\n", dp[t] ); } return 0; }
相关文章推荐
- uva624 CD(dp 0-1 背包 打印路径)
- uva 624 CD 01背包打印路径
- UVA 624 - CD (01背包打印路径)
- UVA - 624 - CD(动态规划,背包,打印路径)
- uva 624 CD 01背包打印路径
- UVA 624 CD(01背包+dp打印路径)
- uva 624 (01背包打印路径)
- UVA624(01背包 + 路径打印)
- UVA NO.624 CD(打印路径,简单背包问题)
- UVA 624 - CD (01背包 + 打印物品)
- UVA 624 CD(01背包,要记录路径)
- UVa 624 CD (01背包路径输出)
- Uva 642-CD(0-1背包+打印路径)
- uva 624 CD (01背包+打印路径)
- UVa CD 0-1背包且打印路径
- UVA 624 CD (01背包+打印路径 或 dfs+记录路径)
- UVA 624 CD(打印路径的01背包)
- UVA624 CD,01背包+打印路径,好题!
- UVA 624 CD (01背包+打印路径)
- UVA 624 (0 1背包 + 打印路径)