码迷,mamicode.com
首页 > 其他好文 > 详细

01背包问题学习练习

时间:2014-12-19 18:42:59      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:

这是我写的第一个用动态规划写的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背包问题学习练习

标签:

原文地址:http://www.cnblogs.com/yanglingwell/p/4174363.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!