DP算法:
#include "stdio.h"
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
int need[]={0,2,3,4,1};
int value[]={0,2,5,3,2};
int m=5;//最大的背包容量
int best[6]={0};
for(int i =1;i<5;i++)
for(int j=m;j>=need[i];j--){
/* j是剩余空间,当i从1开始时,j=m*/
best[j]=max(best[j],best[j-need[i]]+value[i]);
}
for(int i =1;i<=m;i++){
printf("%d ",best[i]);
}
}