首页 > 编程语言 >复习回顾-动态规划算法part6-377. 组合总和 Ⅳ

复习回顾-动态规划算法part6-377. 组合总和 Ⅳ

时间:2024-02-29 10:57:33浏览次数:31  
标签:背包 target nums range 377 part6 dp 复习

注意点&感悟:

  • 跟卡尔的57题不一样,57爬楼梯,物品是m,背包是total总台阶数量,每次爬楼梯的m个 for i in range(1,m+1) 选择是有限的
  • 377组合是,给的nums是物品,背包是target目标, 每次这些物品都能选,选择是全部遍历一遍。for i in range(len(nums)) 全部遍历

题目链接:377. 组合总和 Ⅳ

自己独立写的代码:

class Solution:
    def combinationSum4(self, nums: List[int], target: int) -> int:
        # 完全背包问题(可以选多次)
        # 属于完全背包问题下的求种类问题 
        # 需要先遍历背包,后遍历物品
        # 背包容量是target
        # 物品集和是nums(全部物品)
        # 递推公式为dp[j]+=dp[j-nums[i]]
        dp = [0] * (target+1)
        dp[0] = 1
        for j in range(target+1):
            for i in range(len(nums)):
                if j>= nums[i]:
                    dp[j] += dp[j-nums[i]]
        return dp[target]

通过截图:

标签:背包,target,nums,range,377,part6,dp,复习
From: https://www.cnblogs.com/liqi175/p/18042942

相关文章

  • 24冬网络流复习题解
    A是谁瞪了半个小时不会*2000呀,是谁呀是谁呀。感觉这题比部分紫题都难。。。首先发现选取字符的顺序并不重要,所以\(t\)可以看成\(26\)个字符要选的个数。设字符\(c\)出现了\(x\)次,那么直接向汇点连流量为\(x\)费用为\(0\)的边。然后考虑\(s_i\)与每个字符的关......
  • 尝试前端八股文复习的第一天
    前言:个人不是背书的料,自然复习也不能正常对待,那基本是读不进~(算是给以后温习知识的笔记。)想法:通俗易懂的潜台词是“通俗易忘”,它进入脑子的过程并不深刻,所以对它的了解止在当下。(知识不是自己总结回来的,读别人的总结,比不上适合自己的认知)付诸:如果复刻当初学习的过程,在案例......
  • day44 动态规划part6 代码随想录算法训练营 518. 零钱兑换 II
    题目:518.零钱兑换II我的感悟:递推公式,我没写错。是初始化写错了。这种求多少种的,要考虑1种,是空集合选1中。而那些考虑能背最大的价值,要从0初始化,0的含义值无价值。 理解难点:递推公式,是累加dp[j]+=dp[j-conins[i]]初始化的含义 dp[0]=1听课笔记: 代码示例:cl......
  • day44 动态规划part6 代码随想录算法训练营 卡尔网52题
    题目:52.携带研究材料我的感悟:背模板,记下来,就好了。理解难点:听课笔记:代码示例:n,v=map(int,input().split())weight_list=[]value_list=[]for_inrange(n):weight,value=map(int,input().split())weight_list.append(weight)value_list.a......
  • day44 动态规划part6 代码随想录算法训练营 完全背包理论
    题目:完全背包理论我的感悟:记忆中理解。理解难点:为什么正序就是用多次?因为正序是借用本层左侧的状态,倒序是借用上一层的状态。演示:打印DP:示例代码:查看代码#01背包deftest_CompletePack1(weight,value,bagWeight):dp=[0]*(bagWeight+1)f......
  • 复习回顾-动态规划算法-474. 一和零
    注意点&感悟:不会,就抄一遍,默写一遍,总能会的。题目链接:474.一和零自己默写的代码:classSolution:deffindMaxForm(self,strs:List[str],m:int,n:int)->int:#初始化#外层m个0,内层n个1dp=[[0]*(n+1)for_inrange(m+1)]......
  • 复习回顾-动态规划算法-416. 分割等和子集
    注意点&感悟:其实也没啥,不行就背呗~~题目链接:416.分割等和子集自己独立写的代码:classSolution:defcanPartition(self,nums:List[int])->bool:target=sum(nums)iftarget%2==1:#说明是奇数returnFalsetarget=......
  • 2024 省选复习 (updating)
    前言快省选了,在复习,但是不知道干什么。所以就写点东西吧。就是瞎写写,所以可能有很多错误,如果发现了欢迎指出。常见错误&注意事项数组不能开大,也不能开小题目要求什么千万不能读错,最好手算一下样例算法复习树状数组进阶P6619原本是树状数组二分的模板题,但是用......
  • day2 复习
    操作系统有什么用把对硬件的复杂操作转化成一个一个接口,从繁(高低电频)到简(想干什么干什么)计算机由哪三大部分组成操作系统,接受外部指令,控制硬件硬件,存储信息,输入信息,输出信息应用程序:便利生活,具体干活简述操作系统和应用程序的启动流程双击(按电源键)把指令发送给操作......
  • day1 复习
    什么是编程语言编程语言是人与计算机沟通的介质什么是编程编程是使用编程语言编写一个个文件,使这堆文件完成某种目的为什么要编程奴隶计算机,为我们工作计算机五大组成部分分别有什么作用cpu控制器+运算器控制器:控制这堆废铜烂铁运算器:算术运算+逻辑运算内存:临时存......