poj3624

题目描述:http://poj.org/problem?id=3624

基本的01背包

dp[i-1][v]=max{dp[i-1][v],dp[i-1][v-weight[i]]+value[i]}

 

#include<stdio.h>
#include<memory.h>
int max(int a,int b)
{
    return a>b?a:b;
}
int w[3500],v[3500],dp[13000];
void main()
{
    int n,m,i,j,sum;
    scanf("%d%d",&n,&m);
    sum=0;
    memset(dp,0,sizeof(dp));
    for(i=0;i<n;i++)
    {
        scanf("%d %d",&w[i],&v[i]);
    }
    for(i=0;i<n;i++)
    {
        for(j=m;j>=0;j--)
        {
            if(j>=w[i])
            dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
            else
            dp[j]=dp[j];
        
        }
    }
    printf("%d\n",dp[m]);

}

 

posted @ 2012-05-30 20:27  枫月寒  阅读(115)  评论(0编辑  收藏  举报