算法
在练习算法的过程中做的一些笔记
柯349
这个作者很懒,什么都没留下…
展开
-
377组合总和 Ⅳ
4、确定遍历顺序:因为求的是排列数,所以要先背包后物品,并从左向又遍历以下为图解,先物品后背包时,物品只按一个顺序放置,即1,2,5,先背包后物品时,不断循环物品,则会出现不一样的序列,如果用的二维数组的话,先背包还是先物品就无所谓了。会出现超出整数范围的情况,所以用减法检查一下dp的范围,即。该题可以抽象为完全背包问题,需要注意的是,本题要求的是。5、打印dp数组:如果有错误或者不理解可以打印dp数组。为当背包容量为i时有多少种排列组合。原创 2024-02-29 21:54:43 · 458 阅读 · 0 评论 -
474 一零和
此问题可以抽象成0-1背包问题,将每个字符串看做要放入背包中的物品即可,只不过比较特殊的是这个题目中的物品的重量有两个方向的考量,即0的个数和1的个数。3、dp数组初始化:初始化为0即可,这样可以避免正确的数值被初始化的数值覆盖。5、打印dp数组:出错或者不理解的话可以将dp数组打印出来看看。,zeroNum表示0的个数,oneNum表示1的个数。4、确定遍历顺序:先遍历物品,即字符串,再遍历背包。当背包容量为i和j时,所能装入的字符串的最大个数。原创 2024-02-29 17:16:50 · 349 阅读 · 0 评论 -
分割等和子集
2、递推方程dp[j] = max(dp[j],dp[j-nums[i]]+nums[i],注意dp最大容量为(100*200)/ 2 + 1。1、dp[j]表示当背包容量为j时所装最大价值,本题相当于价值和重量相同。3、初始化dp[0]即当背包容量为0时,所能装的最大价值为0。4、遍历顺序,用滚动数组,先物品,后背包,遍历背包时倒序遍历。5、打印dp数组,本题没有错,不打印。原创 2024-02-28 16:11:27 · 366 阅读 · 0 评论 -
集合的全排列
这里采用递归思想解决全排列的问题定义一个全排列的算法,每次固定一个数后,将未固定的数据进行全排列,即递归,当所有的数据位置都确定之后,输出并结束当前函数,然后通过swap返回上次固定清况,再进行递归,当所有底层情况递归完成后,再返回上一层递归,直到全排列完成。原创 2023-03-16 10:54:17 · 110 阅读 · 0 评论 -
518 零钱兑换2
按公式来看必须初始化成1,也可以理解成当有一个硬币组合{0}时组成面值0有一种方法。,这个错误的判定条件导致第二层for循环根本没有执行,j初始化的值也应改为。5、打印dp数组:出错或者不理解时可以打印dp数组查看一下。表示背包容量为j时,装满背包的方法的种数。4、确定遍历顺序:因为是完全背包,且求的是。错误原因,第二层for循环的判定条件错误。,所以先物品后背包,从小到大遍历。也是错误的判定语句,按公式来看必须初始化成1,也可以理解成当有一个硬币组合{0}时组成面值0有一种方法。,这个错误的判定条件导致第原创 2024-02-29 18:21:01 · 398 阅读 · 0 评论