背包问题仍然是一个最优解的问题,但是不能用贪心算法来求解。只能用动态规划方法来求解。
#include <iostream>
int max(int a,int b)
{
return a<b?b:a;
}
int main()
{
unsigned int weight[5]={0,1,3,5,9};
unsigned int value[5] ={0,2,3,4,7};
int vec = 10;
int test[5][11]={0};
for(int i=1;i<=4;i++)
{
for(int j = 1;j<=vec;j++)
{
if(weight[i]<j)
{
test[i][j]=max(test[i-1][j],test[i-1][j-weight[i]]+value[i]);
}
else
test[i][j]=test[i-1][j];
}
}
printf("%d",test[4][vec]);
return 0;
}