基础算法 01背包问题
#include <stdio.h>
#define N 6
#define W 21
int B[N][W] = {0};
int w[6] = {0,2,2,6,6,4};
int v[6] = {0,6,3,5,4,6};
void knapsack() {
int k,C;
for (k=1;k<N;k++) {
for(C=1;C<W;C++) {
if(w[k] > C)
{
B[k][C] = B[k-1][C];
}
else {
int value1 = B[k-1][C-w[k]]+v[k];
int value2 = B[k-1][C];
if (value1 > value2) {
B[k][C] = value1;
}
else {
B[k][C] = value2;
}
}
}
}
}
int main()
{
knapsack();
printf("%d\n",B[5][20]);
return 0;
}

浙公网安备 33010602011771号