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]

通过截图:

扩展写法:

资料:

  1. 组合总和 Ⅳ  

视频讲解: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

posted @ 2024-02-28 15:13  o蹲蹲o  阅读(10)  评论(0编辑  收藏  举报