#include <stdio.h>
typedef struct {
int weight;
int value;
} Item;
int max(int a,int b){
if(a>b){
return a;
}
else {
return b;
}
}
int BQ(Item items[], int n, int m) {
int table[n + 1][m + 1];
for (int i = 0; i <= n; i++) {
for (int j = 0; j <= m; j++) {
if (i == 0 || j == 0) {
table[i][j] = 0;
} else if (items[i - 1].weight <= j) {
table[i][j] = max(items[i - 1].value + table[i - 1][j - items[i - 1].weight], table[i - 1][j]);
} else {
table[i][j] = table[i - 1][j];
}
printf("%d",table[i][j]);
}
printf("\n");
}
return table[n][m];
}
int main() {
Item items[] = {{2, 3}, {3, 4}, {4, 5}, {5, 6}};
printf("最大价值为: %d\n", BQ(items, sizeof(items) / sizeof(Item), 5));
Item items2[] = {{1, 3}, {2, 4}, {3, 5}, {4, 6}};
printf("最大价值为: %d\n", BQ(items2, sizeof(items) / sizeof(Item), 5));
Item items3[] = {{5, 3}, {6, 4}, {7, 5}, {8, 6}};
printf("最大价值为: %d\n", BQ(items3, sizeof(items) / sizeof(Item), 5));
return 0;
}