zoukankan      html  css  js  c++  java
  • 322.零钱兑换-python

    动态规划问题,稍后更新思路

    class Solution(object):
        def coinChange(self, coins, amount):
            """
            :type coins: List[int]
            :type amount: int
            :rtype: int
            """
            INF = float('inf')
            dp = []
            N = len(coins)
            for _ in range(N):
                tmp = [INF] * (amount+1)
                tmp[0] = 0
                dp.append(tmp)
    
            for j in range(1, amount+1):
                if j >= coins[0] and dp[0][j-coins[0]] != INF:
                    dp[0][j] = dp[0][j-coins[0]] + 1
            for i in range(1, N):
                for j in range(1, amount+1):
                    if j >= coins[i]:
                        dp[i][j] = min(dp[i - 1][j], dp[i][j-coins[i]] + 1)
                    else:
                        dp[i][j] = dp[i - 1][j]
            return dp[len(coins)- 1][amount] if dp[N-1][amount] != INF else -1
    

    进行空间压缩:

    class Solution(object):
        def coinChange(self, coins, amount):
            """
            :type coins: List[int]
            :type amount: int
            :rtype: int
            """
            INF = float('inf')
            dp = [0] + [INF]*amount
            N = len(coins)
            for i in range(amount+1):
                for j in range(N):
                    if i >= coins[j]:
                        dp[i] = min(dp[i], dp[i-coins[j]]+1)
            return dp[amount] if dp[amount] <= amount else -1 
    
  • 相关阅读:
    Log4Net使用
    4月博文
    论坛题目练习
    职场冷笑话两则
    初识管理的一些心得
    Project中分清楚挣值项
    预留规划项
    小感触
    好事多磨,好事成双
    忧郁
  • 原文地址:https://www.cnblogs.com/dolisun/p/11348524.html
Copyright © 2011-2022 走看看