#include <stdio.h>
#define N 5
#define W 10
int max(int a, int b) {
return a > b ? a : b;
}
int knapsack(int weights[], int values[]) {
int i, w;
int dp[N+1][W+1];
for (i = 0; i <= N; i++) {
dp[i][0] = 0;
}
for (w = 0; w <= W; w++) {
dp[0][w] = 0;
}
for (i = 1; i <= N; i++) {
for (w = 1; w <= W; w++) {
if (weights[i-1] <= w) {
dp[i][w] = max(dp[i-1][w], dp[i-1][w-weights[i-1]] + values[i-1]);
}
else {
dp[i][w] = dp[i-1][w];
}
}
}
return dp[N][W];
}
int main() {
int weights[N] = {2, 3, 4, 5, 9};
int values[N] = {3, 4, 5, 6, 10};
int max_value;
max_value = knapsack(weights, values);
printf("背包容量为%d,物品数量为%d,最大价值为%d\n", W, N, max_value);
return 0;
}