这是我写的第一个用动态规划写的01背包,点个赞。呵呵,题目描述就不说了,你懂的。。。
直接上代码。。。。
#include<stdio.h> struct item { int value;//物品的质量 int weigh;//物品的重量 }; int main() { int item_N;//物品种类 int W_all;//总质量最大要求 printf("物品种类 最大质量\n"); scanf("%d%d",&item_N,&W_all); int i; struct item G[20]; for(i=0;i<=item_N;i++){ G[i].value=0; G[i].weigh=0; }; printf("G[i].value G[i].weigh\n"); for(i=1;i<=item_N;i++) scanf("%d%d",&G[i].value,&G[i].weigh); int F[200]={0};//F[i]表示最大质量为i时的最大价值; int w; for(i=1;i<=item_N;i++){ for(w=W_all;w>=G[i].weigh;w--){ //F[w]=max{F[w],F[w-G[i].weigh]+G[i].value} if(F[w]<F[w-G[i].weigh]+G[i].value) F[w]=F[w-G[i].weigh]+G[i].value; } int j; for(j=0;j<W_all;j++) printf("F[%d]=%d ",j,F[j]); printf("\n"); } printf("F[W_all]=%d\n",F[W_all]); return 0; }
测试数据:
时间: 2024-09-30 05:31:12