zoukankan      html  css  js  c++  java
  • 力扣 | 322. 零钱兑换

    第一次完完整整的用py写代码,而且是动态规划,虽然这是一个最最基础的动态规划,但是ac的时候还是好开心,先不到人生中第一个一发ac的动态规划是用py过的


    给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。

    示例 1:

    输入: coins = [1, 2, 5], amount = 11
    输出: 3
    解释: 11 = 5 + 5 + 1
    示例 2:

    输入: coins = [2], amount = 3
    输出: -1
    说明:
    你可以认为每种硬币的数量是无限的。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/coin-change

    '''
    @Modify Time      @Author   
    ------------      -------    
    2019/11/18 14:30   laoalo    
    '''
    class Solution(object):
        def coinChange(self, coins, amount):
            """
            :type coins: List[int]
            :type amount: int
            :rtype: int
            """
            f = [float("inf")]*(amount+1) # 初始化为无穷大
            f[0]=0
            for i in range(1,amount+1):
                for j in coins:
                    # print(">>",i,"=",f[i-j],"+",f[i])
                    if i>=j:
                        f[i]=min(f[i-j]+1,f[i])
                # print( i ,"=",f[i])
    
            if f[amount] == float('inf'):
                return -1
            return f[-1]
    
    a = Solution()
    print(a.coinChange([2,5,7],27))
  • 相关阅读:
    angular2 UT 导入 jquery问题解决
    css超过指定宽度用...表示
    karma-coverage通过浏览器显示
    angular2复选框及其按钮
    前端分页控制
    input复选框checkbox默认样式纯css修改
    弧形侧边栏
    浅谈软件测试
    随笔1
    java注解小记
  • 原文地址:https://www.cnblogs.com/chrysanthemum/p/11882100.html
Copyright © 2011-2022 走看看