Java教程

面试题 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

说明:

注意:

你可以假设:

  • 0 <= n (总金额) <= 1000000
 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 };

 

这篇关于面试题 08.11. 硬币(动态规划)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!