标签:
呵呵,只是练习而已,表说伦家的代码丑哦。。。>.<#
完全背包代码:
#include<stdio.h> struct item//储存物品信息 { int value,weigh;//价值和重量 }; int main() { int item_all,W_max;//item_all表示物体总数 W_max表示背包容量 struct item G[100]; printf("物品总数 最大质量\n"); scanf("%d%d",&item_all,&W_max); int i; printf("G[i].value G[i].weigh\n"); for(i=1;i<=item_all;i++) scanf("%d%d",&G[i].value,&G[i].weigh); int F[100]={0};//记录过程中的最大 int v; for(i=1;i<=item_all;i++){//分别表示i个物品放或者不放入背包 for(v=G[i].weigh;v<=W_max;v++){//分别表示最大容量为v的背包 //F[v]=max{F[v],F[v-G[i].weigh]-G[i].value} int temp=F[v-G[i].weigh]+G[i].value; if(temp>F[v]) F[v]=temp; } int x; for(x=0;x<=W_max;x++) printf("F[%d]=%d ",x,F[x]); printf("\n"); } printf("F[W_max}=%d\n",F[W_max]); return 0; }
测试结果:
标签:
原文地址:http://www.cnblogs.com/yanglingwell/p/4175597.html