HDU2069 Coin Change(基础DP)

题解:

/*
 * hdu2069
 * 题意:给出五种面值的银币,分别是1,5,10,25,50
 * 对于给定数字x,求解有多少种银币组合的方法。
*/
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
const int maxn=255;
int a[5]={1,5,10,25,50};
ll dp[255][105];//dp[j][k]:用k个银币组成j值的个数
int main () {
    int x;
    while (cin>>x) {
        memset(dp,0,sizeof(dp));
        dp[0][0]=1;
        for (int i=0;i<5;i++)
            for (int k=1;k<=100;k++)
                for (int j=a[i];j<=x;j++)
                    dp[j][k]+=dp[j-a[i]][k-1];
        int ans=0;
        for (int i=0;i<=100;i++)
            ans+=dp[x][i];
        printf("%d\n",ans);
    }
}

 

posted @ 2020-05-16 13:50  zlc0405  阅读(125)  评论(0编辑  收藏  举报