小P寻宝记——粗心的基友(c++ 滚动数组的简单应用)

来源:互联网 发布:apache和tomcat的区别 编辑:程序博客网 时间:2024/06/05 13:36
#include<stdio.h>int max(int a1,int a2){    return a1=a1>a2?a1:a2;}struct bag{    int v;    int pay;}s[10006];   int dp[10005];int main(){    int n,i,j,m,k;    while(scanf("%d%d",&n,&m)!=EOF)    {        for(i=1;i<=n;i++)            scanf("%d%d",&s[i].v,&s[i].pay);        for(i=0;i<=m;i++)            dp[i]=0;        for(i=1;i<=n;i++)            for(j=m;j>=0;j--)//必须从后向前刷新数据        if(j>=s[i].v)        {            dp[j]=max(dp[j],dp[j-s[i].v]+s[i].pay);        }        printf("%d\n",dp[m]);    }    return 0;}

点击打开链接
1 0