【NYOJ 289 】

来源:互联网 发布:qq群排名优化助手软件 编辑:程序博客网 时间:2024/04/30 00:08

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=289

#include<cstdio>#include<iostream>#include<cstring>using namespace std;#define max(a,b)  (a>b?a:b)struct point {    int c,w;}a[1005];int dp[1005][1005];int main(){    int n,v;    while(scanf("%d%d",&n,&v)&&n||v){        for(int i=1;i<=n;i++)            scanf("%d%d",&a[i].c,&a[i].w);        memset(dp,0,sizeof(dp));        for(int i=1;i<=n;i++)            for(int j=0;j<=v;j++)                if(a[i].c<=j){                    dp[i][j]=max(dp[i-1][j],dp[i-1][j-a[i].c]+a[i].w);                }                else                    dp[i][j]=dp[i-1][j];        printf("%d\n",dp[n][v]);    }}


#include<cstdio>#include<iostream>#include<cstring>using namespace std;#define max(a,b)  (a>b?a:b)struct point {    int c,w;}a[1005];int dp[1005];int main(){    int n,v;    while(scanf("%d%d",&n,&v)&&(n+v)){        for(int i=1;i<=n;i++)            scanf("%d%d",&a[i].c,&a[i].w);        memset(dp,0,sizeof(dp));        for(int i=1;i<=n;i++)            for(int j=v;j>=a[i].c;j--)               dp[j]=max(dp[j],dp[j-a[i].c]+a[i].w);        printf("%d\n",dp[v]);    }}


0 0
原创粉丝点击