题解 | #dp# #兑换零钱(一)#

兑换零钱(一)

https://www.nowcoder.com/practice/3911a20b3f8743058214ceaa099eeb45

#coding:utf-8
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 最少货币数
# @param arr int整型一维数组 the array
# @param aim int整型 the target
# @return int整型
#

# 注意:这道题边界条件很有意思
class Solution:
    def minMoney(self , arr , aim ):
        # write code here
        ##init
        
        dp = [float('inf') for i in range(0, aim + 1)]
        dp[0] = 0
        ##process
        if aim <= 0:
            return 0
        ret = -1
        for i in range(0, len(arr)):
            cur_coin = arr[i]
            for j in range(1, aim + 1):
                if cur_coin > j:
                    continue 
                #用或者不用
                dp[j] = min(dp[j], dp[j - cur_coin] + 1)
        print ("dp: ", dp)
        if dp[aim] != float('inf'):
            ret = dp[aim]
        return ret

全部评论
一定要记得判断j是否大于当前的coin大小
点赞 回复 分享
发布于 2024-05-13 20:20 北京

相关推荐

牛客96763241...:这个简历和我的模板一样,左面太空了,不协调,自己调一下会更好
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务