摘要:
✅装满完全背包的最小物品总价值 仍然如题,不过这一题的每一个物品的价值需要自己算出来\ 其余的都是套模板的老生常谈了 class Solution { public: //装满完全背包后物品的最小总价值 int numSquares(int n) { vector<int>value; vector 阅读全文
posted @ 2022-04-05 21:38
北原春希
阅读(30)
评论(0)
推荐(0)
摘要:
✅装满完全背包的最小物品总价值 这里类型如题,不过是把价值改成了个数 故在初始化dp数组时要注意初始化大一点。然后即是别忘了有dp[0] = 0,这个是求价值的基础 然后因为是完全背包,所以背包容量遍历顺序为正序 因为这里是求价值,跟物品是组合还是排列无关,所以这里既可以先遍历物品,在遍历背包容量, 阅读全文
posted @ 2022-04-05 21:17
北原春希
阅读(48)
评论(0)
推荐(0)
摘要:
✅求装满背包的物品的排列总和 这里是求排列,而不是组合!!!即是[1,2], [2, 1]是两个东西 💡在背包问题里求排列的方法是: 排列:先遍历背包容量,再遍历物品 组合:先遍历物品,再遍历背包容量 这里再注意到这里是完全背包,再遍历背包容量的时候正序就好了 class Solution { p 阅读全文
posted @ 2022-04-05 20:54
北原春希
阅读(29)
评论(0)
推荐(0)
摘要:
✅装满完全背包的方法数 经典完全背包的问题 dp数组的含义 dp[i]指装满容量为i的完全背包所用的方法数 递推公式 装满背包的方法的一般递推公式:dp[j] += dp[j - coins[i]] 初始化 老规矩,当容量为0时,装满它的方法只有一个:什么也不干,固有dp[0] = 1 遍历顺序 遍 阅读全文
posted @ 2022-04-05 20:38
北原春希
阅读(26)
评论(0)
推荐(0)
摘要:
✅做题思路or感想 一道01背包问题,有所不同的是这里背包的价值是“个数” 这里每一个物品都有两种重量,所以背包也设有两种容量就好了,二维背包走起来 dp数组的含义 dp[i][j]表示容量为i,j的背包所能容纳的最大元素个数 递推公式 经典01背包公式的两个容量版,以及把价值变成了个数:dp[i] 阅读全文
posted @ 2022-04-05 20:21
北原春希
阅读(25)
评论(0)
推荐(0)
摘要:
✅01背包中"装满背包有几种方法"的问题 这道题难就难在如何把题面转化为背包问题 💡由题知left + right = sum, left - right = target,故有left = (sum + target) / 2,则此时就转化为了装满容量为left的背包有几种方法 当然这里要讨论一 阅读全文
posted @ 2022-04-05 20:01
北原春希
阅读(216)
评论(0)
推荐(0)
摘要:
✅01背包中是"否能装满"的问题 如果能把数组分割成两个子集且使得子集的元素和相等,那么证明该集合的元素总和必须要是能被2整除的,这是一个前提条件 假设总和为sum,那问题就转化成了余下的元素是否能装满容量为sum / 2的背包 再其次,因为每一个元素只能使用一次,所以这是一个0 - 1背包 💡这 阅读全文
posted @ 2022-04-05 19:24
北原春希
阅读(38)
评论(0)
推荐(0)
摘要:
✅做题思路or感想 这道题是我二刷代码随想录一路无双下来第一个遇到的一点思路也没有的题目,惭愧 dp数组的含义 dp[i]是指总节点数为n的不同二叉搜索树的种类 递推公式 在对dp[i]的遍历中,总节点数为n,取其中的j 为一个根节点,则这个节点的左边有j - 1个节点,右边有i - j个节点,故d 阅读全文
posted @ 2022-04-05 18:36
北原春希
阅读(28)
评论(0)
推荐(0)
摘要:
✅做题思路or感想 其实做这道题的时候我一直在想,要不是看了一眼标签里有动态规划,这道题谁会知道要用动态规划来做啊? dp数组的含义 dp[i]指把整数n拆分后的最大乘积(这里的拆分至少是拆成两个数!,所以dp[i][j]至少是两个数的乘积) 递推公式 从1遍历到j,得到dp[i]的渠道有 (i - 阅读全文
posted @ 2022-04-05 18:24
北原春希
阅读(50)
评论(0)
推荐(0)
摘要:
✅做题思路or感想 一眼图论,但其实是动态规划 这一题和上面一题不同,有了障碍物的设计 dp数组的含义 求什么就设什么。dp[i][j]是到达坐标(i, j)的不同路径数 递推公式 到达(i, j)的路径可以是从(i - 1, j)来,也可以是从(i, j - 1)来,题目求的是方法数,故这里就直接 阅读全文
posted @ 2022-04-05 16:40
北原春希
阅读(26)
评论(0)
推荐(0)
摘要:
✅做题思路or感想 乍一看是一道图论题(实际上也可以用图论),但是可以用动态规划来解的题。 dp数组的含义 求什么就设什么。dp[i][j]是到达坐标(i, j)的不同路径数 递推公式 到达(i, j)的路径可以是从(i - 1, j)来,也可以是从(i, j - 1)来,题目求的是方法数,故这里就 阅读全文
posted @ 2022-04-05 16:35
北原春希
阅读(34)
评论(0)
推荐(0)
摘要:
✅做题思路or感想 这一题的题面就难读的离谱,可以引用一位大哥的话 我觉得这个题的描述应该改改:每个阶梯都有一定数量坨屎,一次只能跨一个或者两个阶梯,走到一个阶梯就要吃光上面的屎,问怎么走才能吃最少的屎?开局你选前两个阶梯的其中一个作为开头点,并吃光该阶梯的屎。 豁然开朗💡 dp数组的含义 求什么 阅读全文
posted @ 2022-04-05 16:29
北原春希
阅读(33)
评论(0)
推荐(0)
摘要:
✅做题思路or感想 这里和斐波那契的区别是这里是要求方法数 dp数组的含义 dp[n]意思是爬到第n阶台阶有的不同种的方法数 递推公式 爬到第n阶台阶有几种方法呢,可以从n - 1阶爬上来,也可以从 n - 2阶爬上来,故dp[n] = dp[n - 1] + dp[n - 2] 初始化 dp[0] 阅读全文
posted @ 2022-04-05 16:24
北原春希
阅读(31)
评论(0)
推荐(0)
摘要:
✅做题思路or感想 直接dp四部曲(第五步是调试,故省) dp数组的含义 当值为n时,斐波那契数列f(n)的值 递推公式 题目已经给了:F(n) = F(n - 1) + F(n - 2),其中 n > 1 初始化 因为要确保n-2 >= 0,故这里要初始化到dp[1],而dp[1],dp[0]的值 阅读全文
posted @ 2022-04-05 16:18
北原春希
阅读(24)
评论(0)
推荐(0)

浙公网安备 33010602011771号