uva 624 CD

#include<stdio.h>
#include<string.h>

int main()
{
    int n,t,dp[10005],c[25][10005],v[10005],i,j;
    while(~scanf("%d%d",&n,&t))
    {
        for(i=0;i<t;i++) scanf("%d",&v[i]);
        memset(dp,0,sizeof(dp));
        memset(c,0,sizeof(c));
        for(i=0;i<t;i++)
        {
            for(j=n;j>=v[i];j--)
            {
                if(dp[j]<dp[j-v[i]]+v[i]) {dp[j]=dp[j-v[i]]+v[i];c[i][j]=1;}
            }
        }
        j=n;
        for(i=t-1;i>=0;i--)
        {
            if(c[i][j]) {printf("%d ",v[i]);j-=v[i];}
        }
        printf("sum:%d
",dp[n]);
    }
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。http://xiang578.top/

原文地址:https://www.cnblogs.com/xryz/p/4848082.html