0-1背包问题,输出的是错的 求大佬帮助[face]monkey2:028.png[/face] #

0-1背包问题,输出的是错的 求大佬帮助[face]monkey2:028.png[/face] #includevoid knapsackDp(int n, int pr[], int v[], int C) { int p[100][100]; int rec[100][100]; for (int i = 0; i <= C; i++) { p[0][i] = 0; } for (int i = 0; i <= n; i++) { p[i][0] = 0; } for (int i = 1; i <= n; i++) { for (int c = 1; c <= C; c++) { if (v[i] <= c) { if(pr[i]+p[i-1][c-v[i]]>p[i-1][c]) { p[i][c] = p[i] + p[i - 1][c- v[i]]; rec[i][c] = 1; } } else { p[i][c] = p[i - 1][c]; rec[i][c] = 0; } } } int K = C; for (int i = n; i >= 1; i--) { if (rec[i][K] == 1) { printf("选择%d\n",i); K = K - v[i]; } else { printf("不选%d\n",i); } } printf("%d", p[n][C]); } int main() { int v[6] = { 10,3,4,5,4 }; int pr[6] = { 24,2,9,10,9 }; knapsackDp(5, pr, v, 13); return 0; }

已解决