andre_joy

导航

hdu 2602

地址:http://acm.hdu.edu.cn/showproblem.php?pid=2602

题意:背包问题。

mark:第一次背包~

代码:

#include <stdio.h>
#include <string.h>

int v[1010],c[1010];
int dp[1010];

int max(int a, int b) {return a > b ? a : b;}

int main()
{
    int t,m,n;
    int i,j;
    scanf("%d", &t);
    while(t-- && scanf("%d%d", &m, &n))
    {
        memset(dp, 0, sizeof(dp));
        for(i = 0; i < m; i++)
            scanf("%d", v+i);
        for(i = 0; i < m; i++)
            scanf("%d", c+i);
        for(i = 0; i < m; i++)
            for(j = n; j >= 0; j--)
                if(j >= c[i]) dp[j] = max(dp[j], dp[j-c[i]]+v[i]);
        printf("%d\n", dp[n]);
    }
    return 0;
}

posted on 2012-07-23 16:29  andre_joy  阅读(109)  评论(0编辑  收藏  举报