day44 动态规划part6 代码随想录算法训练营 377. 组合总和 Ⅳ
题目:377. 组合总和 Ⅳ
我的感悟:
- 没看视频,先自己思考了一下,发现是上一道的延伸。
- 自己没写对,看了文字,递推公式是一样的,只是顺序不同。
- 累了,今天到这把
理解难点:
- 遍历顺序,背包在外层就是排列,物品在外层是组合
- 排列,强调顺序。
- 组合,不强调顺序。
- 什么时候用回溯,是要我们列出来,是回溯。要我们写有多少种,是动态规划。
听课笔记:
- 也没讲啥,就是讲了顺序,
- 还扩展了爬楼梯的写法。
我改良的代码:
class Solution:
def combinationSum4(self, nums: List[int], target: int) -> int:
dp = [0] * (target+1)
dp[0] =1
for j in range(1,target+1): # 遍历背包
for i in range(len(nums)): # 遍历物品
if j >= nums[i]:
dp[j] += dp[j-nums[i]]
return dp[target]
通过截图:
扩展写法:
资料:
- 组合总和 Ⅳ
视频讲解:https://www.bilibili.com/video/BV1V14y1n7B6
https://programmercarl.com/0377.%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8C%E2%85%A3.html