⚠️ 三个二维 DP 一起交
把网格路径、带障碍的网格路径、编辑距离都写出来,三个答案用 / 拼起来输出。 (3 行 4 列 / 同样的网格但 (1,1) 有障碍 / horse 变 ros)
状态压缩用二进制位表示什么
状压 DP 里,一个整数的每一个二进制位表示【0】。
怎么判断第 k 位是不是 1
判断整数 s 的第 k 位是不是 1,写法是【0】。
四个元素一共多少个状态
四个元素的全部子集,用二进制表示一共有多少种?运行下面这段程序: n = 4 print(1 << n)
数出恰好选了两个的状态
四个元素、共 16 个状态。补全代码:数出其中恰好有两位是 1 的状态有几个。
位运算三件套
补全三个函数:has(第 k 位是不是 1,返回 0 或 1)、add(把第 k 位置成 1)、rm(把第 k 位清成 0)。 用 s = 10(二进制 1010)验四样,拼起来输出:has(s,1)、has(s,2)、add(s,2)、r
状压解四城最短回路
四个城市两两之间的距离已给。从 0 号出发,每个城市恰好去一次,最后回到 0 号,求最短总路程。 补全 tsp:dp[s][u] 表示"走过的城市集合是 s、当前停在 u"时的最短路程。
⚠️ 状压和暴力必须算出同一个数
把状压版和全排列暴力版都写出来,跑同一组距离,输出三样:状压结果 / 暴力结果 / 是否相同(相同输出 结果一致,否则 结果不一致)。
从暴力搜索导出 DP,第一步是什么
把一个暴力递归改成 DP,第一步是【0】。
什么样的递归能导出 DP
一个递归能改成 DP,前提是【0】。