UVa 357

  题目大意:也是硬币兑换问题,与147、674用同样的方法即可解决。

 1 #include <cstdio>
 2 #include <cstring>
 3 #define MAXN 30001
 4 
 5 const int coin[5] = {1, 5, 10, 25, 50};
 6 long long dp[MAXN];
 7 
 8 int main()
 9 {
10 #ifdef LOCALi
11     freopen("in", "r", stdin);
12 #endif
13     memset(dp, 0, sizeof(dp));
14     dp[0] = 1;
15     for (int k = 0; k < 5; k++)
16         for (int i = 1; i < MAXN; i++)
17             if (i >= coin[k])
18                 dp[i] += dp[i-coin[k]];
19     int n;
20     while (scanf("%d", &n) != EOF)
21     {
22         if (dp[n] == 1)  printf("There is only 1 way to produce %d cents change.
", n);
23         else  printf("There are %lld ways to produce %d cents change.
", dp[n], n);
24     }
25     return 0;
26 }
View Code
原文地址:https://www.cnblogs.com/xiaobaibuhei/p/3285064.html