和UVA 147一样的题,dp求解,直接代码:
#include <iostream>
#include <cstdio>
using namespace std;
int query[10000],size=0;
long long dp[30010]={1};
int main()
{
int t,end=0,m[]={1,5,10,25,50};
while(cin>>t){
query[size++]=t;
end=max(end,t);
}
for(int j=0;j<5;j++)
for(int i=0;i+m[j]<=end;i++)
dp[i+m[j]]+=dp[i];
for(int i=0;i<size;i++){
if(dp[query[i]]==1)
printf("There is only 1 way to produce %d cents change.\n",query[i]);
else
printf("There are %lld ways to produce %d cents change.\n",dp[query[i]],query[i]);
}
return 0;
}