01背包问题
背包容量为10
五个物品
价值:8,10,9,5,5
重量:3,6,5,2,3
#include<stdio.h>
#include<stdlib.h>
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
int value[6]={0,8,10,9,5,5};
int weight[6]={0,3,6,5,2,3};
int i,j;
int dp[6][11]={0};
for(i=1;i<6;i++)
{
for(j=1;j<11;j++)
{
if(weight[i] > j)
{
dp[i][j]=dp[i-1][j];
}
else
{
int v1=dp[i-1][j-weight[i]]+value[i];
int v2=dp[i-1][j];
if(v1 > v2)
dp[i][j]=v1;
else
dp[i][j]=v2;
}
}
}
for(i=1;i<6;i++)
{
for(j=1;j<11;j++)
{
printf("%3d",dp[i][j]);
}
printf("\n");
}
return 0;
}