#include <stdio.h>
#define MAX_ITEMS 100
#define MAX_CAPACITY 1000
typedef struct {
int weight;
int value;
} Item;
int knapsack(int capacity, Item items[], int num_items) {
int dp[MAX_CAPACITY + 1] = {0};
for (int i = 0; i < num_items; i++) {
for (int j = capacity; j >= items[i].weight; j--) {
int take_item = dp[j - items[i].weight] + items[i].value;
int skip_item = dp[j];
dp[j] = (take_item > skip_item) ? take_item : skip_item;
}
}
return dp[capacity];
}
int main() {
Item items[] = {
{2, 12},
{1, 10},
{3, 20},
{2, 15}
};
int num_items = sizeof(items) / sizeof(items[0]);
int capacity = 5;
int max_value = knapsack(capacity, items, num_items);
printf("背包问题最优解为:%d\n", max_value);
return 0;
}