本文主要是介绍【代码随想录训练营】【Day 46】【动态规划-6】| Leetcode 518, 377,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
【代码随想录训练营】【Day 46】【动态规划-6】| Leetcode 518, 377
需强化知识点
- 完全背包基础(遍历重量时 正序,保证物品可重复加入)
- 完全背包:组合问题,先物品后重量,排列问题,先重量后物品
题目
518. 零钱兑换 II
- 完全背包 组合问题,先物品后重量
- 代码随想录思路:组合 和 排列
class Solution:def change(self, amount: int, coins: List[int]) -> int:# 金额 i 的 组成方式数量dp = [0] * (amount + 1)dp[0] = 1for coin in coins:for i in range(coin, amount + 1):dp[i] += dp[i-coin]return dp[amount]
377. 组合总和 Ⅳ
- 完全背包:排列问题,先重量后物品
class Solution:def combinationSum4(self, nums: List[int], target: int) -> int:# 总和为 i 的组合个数dp = [0] * (target+1)dp[0] = 1for i in range(1, target+1):for num in nums:if i >= num:dp[i] += dp[i-num]return dp[target]
这篇关于【代码随想录训练营】【Day 46】【动态规划-6】| Leetcode 518, 377的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!