zoukankan      html  css  js  c++  java
  • [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]);

  • 相关阅读:
    oracle-PL/SQL1
    ROS之Gazebo
    ROS之urdf 2
    ROS之urdf 1
    ROS 面部识别
    ROS x Arduino
    STM32F0的低功耗模式
    项目进度
    C++函数返回为引用
    STM32F0的多路ADC 无DMA
  • 原文地址:https://www.cnblogs.com/Swetchine/p/11161444.html
Copyright © 2011-2022 走看看