最简单的dp问题(1)——hdu2602

来源:互联网 发布:上海大学数据库 编辑:程序博客网 时间:2024/05/16 06:06

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602
解释看注释把

#include<stdio.h>#define max(a,b) ((a)>(b))?(a):(b)int main(void){    int t,n,V;    int i,j,k;    int v[1009];    int w[1009];    int f[1009];    scanf("%d",&t);    while(t--)    {        scanf("%d%d",&n,&V);        for(i = 1 ; i <= n ; i++)        {            scanf("%d",&w[i]);        }        for(i = 1 ; i <= n ; i++)        {            scanf("%d",&v[i]);        }        for(i = 0 ; i <1009 ; i++)            f[i] = 0;   //袋子初始时是空的,所以初始为0        for(i = 1 ; i <= n ; i++)        {            for(j = V ; j >= v[i] ; j--)            {                f[j] = max(f[j],f[j-v[i]]+w[i]);//01背包            }        }        printf("%d\n",f[V]);    }    return 0;}
0 0
原创粉丝点击