uva 674(完全背包求方法数)@

来源:互联网 发布:中建六局 知乎 编辑:程序博客网 时间:2024/05/17 20:01

Description

Download as PDF

#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <algorithm>using namespace std;const int N = 100000;int k[N], dp[N];int main(){    int v[]={1,5,10,25,50};    int n;    while(scanf("%d", &n)!=EOF)    {        if(n==1)        {            printf("1\n");            continue;        }        memset(dp,0,sizeof(dp));        for(int i=0;i<=n;i++)  k[i]=1;        for(int i=0;i<5;i++)        {            for(int j=v[i];j<=n;j++)            {                if(dp[j]<dp[j-v[i]]+v[i])  k[j]=k[j-v[i]];                else if(dp[j]==dp[j-v[i]]+v[i])  k[j]+=k[j-v[i]];                dp[j]=max(dp[j],dp[j-v[i]]+v[i]);            }        }        printf("%d\n",k[n]);    }    return 0;}


0 0
原创粉丝点击