#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