第二步:压掉一维
写出二维版和一维版,输出三样:一维答案 / 二维格子数 / 一维格子数。
第三步:两个区间 DP
写出石子合并([4,1,2,3])和最长回文子序列(bbbab),两个答案拼起来输出。
第四步:三个二维 DP
写出网格路径(3 行 4 列)、带障碍的网格路径((1,1) 有石头)、编辑距离(horse 变 ros),三个答案拼起来输出。
交付:独立设计 DP 状态
这是这条路线的最终作品。把前四步的代码合起来,一次验完五条: 0/1 背包 20,完全背包 25——只差一个循环方向 二维和一维答案相同,格子数从 44 降到 11 石子合并 19(按区间长度填),最长回文子序列 4 网格路径 10,放一块
⚠️ 图遍历为什么非要 visited
在图上遍历必须记住走过哪些点,因为【0】。
树遍历为什么不用这一步
走过的不做记号,就绕回原地了 不标记 标记过 遍历树的时候不需要 visited,因为【0】。
visited 一般拿什么存
走过的不做记号,就绕回原地了 不标记 标记过 记录"走过哪些点"通常用【0】。
一次遍历的结果是什么
走过的不做记号,就绕回原地了 不标记 标记过 在图上做一次完整遍历,得到的是【0】。
什么问题适合用图遍历
走过的不做记号,就绕回原地了 不标记 标记过 下面最适合用图遍历解决的是【0】。
直接邻居和能走到的,差多少
走过的不做记号,就绕回原地了 不标记 标记过 七个点的图,0 号的邻居表是 [1, 2]。运行下面这段程序,看它的直接邻居有几个、一路能走到几个: def dfs(g, s): seen = set() out = []