上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 19 下一页
摘要: 题目 分析 本题的完全平方数可以重复取,为完全背包问题。dp[i] 表示 凑成 j 的完全平方数的最少个数。递推公式就是从背包问题推出来的 dp[j] = min(dp[j],dp[j-nums[i]] + 1) 初始化,因为求最小值,为了让初始值覆盖结果,所以将初始值设为正无穷。dp[0] = 0 阅读全文
posted @ 2021-02-18 20:04 Uitachi 阅读(77) 评论(0) 推荐(0)
摘要: 题目 分析 根据最长公共子序列中状态表示的技巧,本题依旧两个串。状态标识设 dp[i,j] 表示将a[1-i] 变为 b[1-j] 的所有操作方式的集合中最少操作次数。 其实做了几道线性dp的题目,发现还是有些技巧:就是大都根据最后一个状态或者最后一个或一对元素考虑 递推公式的推导:考虑元素a[i] 阅读全文
posted @ 2021-02-18 17:23 Uitachi 阅读(55) 评论(0) 推荐(0)
摘要: 题目 分析 状态表示,这里有个技巧,题目涉及两个字符串我们一般采用二维dp数组(经验)。 f(i,j)表示所有在第一个序列前 i 个字母中出现,且在第二个序列前 j 个字母出现的子序列的最长长度。重点是如何找递推公式。。。。 设第一个序列为a[]、第二个序列为b[]。f(i,j)所表示的最长子序列的 阅读全文
posted @ 2021-02-18 15:57 Uitachi 阅读(96) 评论(0) 推荐(0)
摘要: 题目 分析 下图为y总的递推公式分析 dp[i] 表示 开头到 i 处最长上升子序列的长度。思考递推公式,如何由小的状态推大状态? 以第 i 个数结尾的上升子序列的构成:仅含 i 位置这一个数(意味着前面上升子序列)或者 若a[i - 1] < a[i] 时,dp[i - 1] + 1。由于dp[i 阅读全文
posted @ 2021-02-17 21:22 Uitachi 阅读(275) 评论(0) 推荐(0)
摘要: 题目 分析 完全背包问题。dp[j]表示和为j的最小硬币个数。最大最小值问题递推公式 dp[j] = min(dp[j],dp[j-coins[i]] + 1) 代码 1 class Solution { 2 public: 3 int coinChange(vector<int>& coins, 阅读全文
posted @ 2021-02-17 17:25 Uitachi 阅读(65) 评论(0) 推荐(0)
摘要: 做了LeetCode背包几道题吧,有些感觉了,故来总结一波。本文只针对01背包和完全背包,对于考研复试够用了。其他背包有待补充....... 参考代码随想录Carl和博文 如何区分01背包和完全背包? 每种物品只能取一次(或nums数组中的每个数字只能用一次)为01背包。每种物品有无数个(或nums 阅读全文
posted @ 2021-02-17 16:05 Uitachi 阅读(231) 评论(0) 推荐(0)
摘要: 题目 分析 本题要结合LeetCode518.零钱兑换II这道题一起看,零钱兑换是组合个数总和,而本题排列个数总和,也就是说 (1, 2, 1) 和 (2, 1, 1)是不同的。遍历顺序:要先遍历背包容量再遍历物品。正好与组合问题遍历顺序相反,组合问题不允许重复,所以要先遍历物品再遍历背包容量。由于 阅读全文
posted @ 2021-02-17 15:33 Uitachi 阅读(78) 评论(0) 推荐(0)
摘要: 题目 分析 此题组合问题,首先看能否回溯,数据范围太大,会超时。题目中说一种面额的硬币有无限个,本题为完全背包。本题与LeetCode 494目标和问题几乎一样。 dp[j]表示凑成总额 j 的种类。dp[0] = 1表示总额0不取任何硬币,这也是一种方法,所以为1,若初始值设为0,那么dp数组全为 阅读全文
posted @ 2021-02-16 22:17 Uitachi 阅读(58) 评论(0) 推荐(0)
摘要: 题目 ACwing 分析 完全背包与01背包的区别在于,每种物品是否可以无限个。意思就是完全背包可以重复取同一间物品。代码上与01背包的不同点在于,在遍历背包容量时要正序遍历,因为倒叙遍历对应只使用取一次物品的情况。 代码 #include<iostream> #include<algorithm> 阅读全文
posted @ 2021-02-16 21:59 Uitachi 阅读(108) 评论(0) 推荐(0)
摘要: 题目 分析 本题是两维01背包。每个子字符串为一件物品,并且只取一次,这就是01背包。两个维度体现在零的数量和一的数量上,也就是原始的01背包中的体积是一个维度,这里对应0的数量和1的数量。原始01背包中的价值对应每一个子字符串,选中子字符串就加1。dp【i】【j】表示最多i个零和最多j个1的最大集 阅读全文
posted @ 2021-02-15 21:09 Uitachi 阅读(99) 评论(0) 推荐(0)
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 19 下一页