Hdu 2602 - Bone Collector

来源:互联网 发布:mac双系统怎么切换 编辑:程序博客网 时间:2024/04/26 14:50

简单的0-1背包问题

 

 

动规方程是: f[j]=max(f[j],f[j-v[i]]+w[i])

 

 

AC代码如下:

#include <stdio.h>#include <string.h>int n,v,w[1050],c[1050];int dp[10000];int max(int a,int b){    if(a>b)         return a;    else        return b;}void pack(int cost,int weight){    int j;    for(j=v;j>=cost;j--)        dp[j]=max(dp[j],dp[j-cost]+weight);}int main(){    int t,i;    scanf("%d",&t);    while(t--)    {        memset(dp,0,sizeof(dp));        scanf("%d %d",&n,&v);        for(i=0;i<n;i++)            scanf("%d ",&w[i]);        for(i=0;i<n;i++)            scanf("%d ",&c[i]);        for(i=0;i<n;i++)            pack(c[i],w[i]);        printf("%d\n",dp[v]);    }    return 0;}