首页 > 代码库 > 01背包问题学习练习
01背包问题学习练习
这是我写的第一个用动态规划写的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;}
测试数据:
01背包问题学习练习
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。