首页 > 代码库 > 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背包问题学习练习