兑换零钱(一)
问题简述
给定数组arr,arr中所有的值都为正整数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个aim,代表要找的钱数,求组成aim的最少货币数。
如果无解,请返回-1.
数据范围:数组大小满足 100000 ≤ n ≤ 10000 , 数组中每个数字都满足 0 < val ≤ 10000,0≤aim≤5000
要求:时间复杂度 O(n×aim) ,空间复杂度 O(aim)。
思路:动态规划
定义
dp(a)
表示凑出a
元钱需要最小的零钱数量;则
dp(a) = min(dp(a), dp(a - arr[j]) + 1) for j in range(len(arr))
;TODO: 整理完全背包相关内容;
Last updated