#include<stdio.h>
int max_2(int a, int b)
{
if(a > b)
{
return a;
}
else
{
return b;
}
}
int main()
{
int w[5] = { 5, 4, 7 ,2 ,6 };
int p[5] = { 12,3,10, 3, 6 };
int i, v, n = 5;
int sum = 12;
int dp[13];
memset(dp, 0, sizeof(dp));
for (i = 0; i < n; i++)
{
for (v = sum; v >= w[i]; v--)
{
printf("v = %d ", v);
printf("i = %d ", i);
dp[v] = max_2(dp[v], dp[v - w[i]] + p[i]);
printf("d[v] = %d\n", dp[v]);
}
printf("\n");
}
for (i = 0; i <= sum; i++)
{
printf("%d ", dp[i]);
}
return 0;
}
可以对照测试来看