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

hdu Bone Collector(背包)

时间:2015-06-15 09:30:14      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:

二位数组做法;

#include<stdio.h>
#include<string.h>
#define M 1009
typedef struct pack
{
    int cost;
    int val;
}PACK;
int f[M][M];<pre name="code" class="cpp">#include<stdio.h>
#include<string.h>
#define M 1009
typedef struct pack
{
    int cost;
    int val;
}PACK;
int main()
{
    int cas,n,v,i,j;
    int f[M];
    PACK a[M];
    scanf("%d",&cas);
    while(cas--){
        scanf("%d%d",&n,&v);
        memset(f,0,sizeof(f));
        for(i=1;i<=n;i++)
            scanf("%d",&a[i].val);
        for(i=1;i<=n;i++)
            scanf("%d",&a[i].cost);
        for(i=1;i<=n;i++)
            for(j=v;j>=a[i].cost;j--)
            if(f[j]<f[j-a[i].cost] + a[i].val)
                f[j]=f[j-a[i].cost]+a[i].val;
        printf("%d\n",f[v]);
    } 
    return 0;
}

int main(){ int cas,n,v,i,j; PACK a[M]; scanf("%d",&cas); while(cas--){ scanf("%d%d",&n,&v); memset(f,0,sizeof(f)); for(i=1;i<=n;i++) scanf("%d",&a[i].val); for(i=1;i<=n;i++) scanf("%d",&a[i].cost); for(i=1;i<=n;i++) for(j=0;j<=v;j++) if(j-a[i].cost>=0 && f[i-1][j] < f[i-1][j-a[i].cost]+a[i].val) f[i][j]=f[i-1][j-a[i].cost] + a[i].val; else f[i][j]=f[i-1][j]; printf("%d\n",f[n][v]); } return 0;}



一位数组:



hdu Bone Collector(背包)

标签:

原文地址:http://blog.csdn.net/a197p/article/details/46494263

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