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]); } }