其他分享
首页 > 其他分享> > 面试题 08.11. 硬币(动态规划)

面试题 08.11. 硬币(动态规划)

作者:互联网

面试题 08.11. 硬币

硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007)

示例1:

 输入: n = 5
 输出:2
 解释: 有两种方式可以凑成总金额:
5=5
5=1+1+1+1+1

示例2:

 输入: n = 10
 输出:4
 解释: 有四种方式可以凑成总金额:
10=10
10=5+5
10=5+1+1+1+1+1
10=1+1+1+1+1+1+1+1+1+1

说明:

注意:

你可以假设:

 1 class Solution {
 2 public:
 3     int waysToChange(int n) {
 4         vector<int> targets = {1, 5, 10, 25};
 5         vector<int> dp(n + 1, 0);
 6         dp[0] = 1;
 7         // 枚举每种币值
 8         for (auto target : targets) {
 9             for (int i = target; i <= n; i++) {
10                 dp[i] = (dp[i] + dp[i - target]) % 1000000007;
11             }
12         }
13         return dp[n];
14     }
15 };

 

标签:10,面试题,示例,int,硬币,08.11,25
来源: https://www.cnblogs.com/MGFangel/p/16115090.html