• [518] Coin Change 2


    You are given coins of different denominations and a total amount of money. Write a function to compute the number of combinations that make up that amount. You may assume that you have infinite number of each kind of coin.

    Example 1:

    Input: amount = 5, coins = [1, 2, 5]
    Output: 4
    Explanation: there are four ways to make up the amount:
    5=5
    5=2+2+1
    5=2+1+1+1
    5=1+1+1+1+1
    

    Example 2:

    Input: amount = 3, coins = [2]
    Output: 0
    Explanation: the amount of 3 cannot be made up just with coins of 2.
    

    Example 3:

    Input: amount = 10, coins = [10] 
    Output: 1
    

    Note:

    You can assume that

    • 0 <= amount <= 5000
    • 1 <= coin <= 5000
    • the number of coins is less than 500
    • the answer is guaranteed to fit into signed 32-bit integer
     1 class Solution {
     2 public:
     3     int change(int amount, vector<int>& coins) {
     4         vector<int>dp(amount + 1 , 0);
     5         dp[0] = 1;
     6         for(int i : coins) {
     7             for(int j = i;j<=amount;++j) {
     8                 dp[j] += dp[j - i];
     9             }
    10         }
    11         return dp[amount];
    12     }
    13 };

    思路:动规问题的核心就是状态递归方程,本题为f(n)=f(n-coin[0])+f(n-coin[1])+...+f(n-coin[n])(假设n>coin[n]);

  • 相关阅读:
    zabbix_agent 主动模式配置
    zabbix 监控ipmi
    超级详细全截图化VMware 安装ubantu
    docker 部署
    C# DataTable和List转换操作类
    C#类型转换工具类
    C# 注册windows 服务
    C# wsdl.exe 生成类文件
    visual studio code download url
    c# xml序列化和反序列化
  • 原文地址:https://www.cnblogs.com/Swetchine/p/11161444.html
Copyright © 2020-2023  润新知