zoukankan      html  css  js  c++  java
  • 322. Coin Change

    You are given coins of different denominations and a total amount of money amount. Write a function to compute the fewest number of coins that you need to make up that amount. If that amount of money cannot be made up by any combination of the coins, return -1.

    Example 1:

    Input: coins = [1, 2, 5], amount = 11
    Output: 3 
    Explanation: 11 = 5 + 5 + 1

    Example 2:

    Input: coins = [2], amount = 3
    Output: -1
    

    Note:
    You may assume that you have an infinite number of each kind of coin.

    class Solution(object):
        def coinChange(self, coins, amount):
            """
            :type coins: List[int]
            :type amount: int
            :rtype: int
            """
            dp = [amount] * (amount+1)
            dp[0] = 0
            for i in range(1, amount+1):
                flag = False
                for c in coins:
                    if i >= c and dp[i-c] != -1:
                        dp[i] = min(dp[i-c]+1, dp[i])
                        flag = True
                if flag == False:
                    dp[i] = -1
            print(dp)
            return dp[-1]    
                    
            
  • 相关阅读:
    POJ 3071 概率DP
    BZOJ 2427 /HAOI 2010 软件安装 tarjan缩点+树形DP
    POJ 1155 树形DP
    POJ 3252 组合数学?
    POJ 3641 快速幂
    POJ 3180 Tarjan
    POJ 3185 DFS
    POJ 3260 DP
    POJ 2392 DP
    99. Recover Binary Search Tree
  • 原文地址:https://www.cnblogs.com/boluo007/p/12542238.html
Copyright © 2011-2022 走看看