摘要:
题目 参考代码随想录 分析 本题可看出为完全背包问题。关键是dp[i]表示什么?dp[i] == true 表示长度为 i 的字符串可以词典中的单词完全划分。 确定递推公式 : if([j, i] 这个区间的子串出现在字典里 && dp[j]是true) 那么 dp[i] = true。 初始化: 阅读全文
posted @ 2021-02-18 21:54
Uitachi
阅读(72)
评论(0)
推荐(0)
摘要:
题目 分析 本题的完全平方数可以重复取,为完全背包问题。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)

浙公网安备 33010602011771号