题意:
給你一個金額( n cents),請你回答共有多少種硬幣組合的方式。例如:n=11,那麼你可以有以下4種硬幣的組合:
- 1個 10 cent的硬幣加上1個 1 cent的硬幣
- 2個 5 cent的硬幣加上1個 1 cent的硬幣
- 1個 5 cent的硬幣加上6個 1 cent的硬幣
- 11個 1 cent的硬幣
p.s 美國的零錢共有以下5種硬幣以及其面值:
- penny, 1 cent
- nickel, 5 cents
- dime, 10 cents
- quarter, 25 cents
- half-dollar, 50 cents
請注意:n=0 我們算他是有一種方式。
思路:又是这个类型的动态规划,[动态规划]UVA357 - Let Me Count The Ways [动态规划]UVA147 - Dollars 这些都是同一个类型的题目。
#include<iostream>
#include<cstring>
using namespace std;
const int maxn=8000;
int coin[5]={1,5,10,25,50};
long long dp[maxn]={1};
int main()
{
int num;
int i,j;
for(i=0;i<5;i++)
{
for(j=0;j<maxn-100;j++)
{
dp[j+coin[i]]=dp[j+coin[i]]+dp[j];
}
}
while(cin>>num)
{
cout<<dp[num]<<endl;
}
return 0;
}