两个区间 DP 一起交

石子合并已给出,补全最长回文子序列,输出「石子合并的答案/bbbab 的回文长度」。两个的状态都是「区间 i 到 j」,差别只在转移里怎么拆。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

网格路径的转移方程(C++)

只能往右或往下走,走到某一格的路径数等于【0】。

开始练习 →

编辑距离的三种操作

第 1 步:第一行、第一列都只有一条路 第 2 步:第 2 行第 2 列:上加左 第 3 步:第 2 行第 3 列:上加左 第 4 步:第 2 行第 4 列:上加左 第 5 步:第 3 行第 2 列:上加左 第 6 步:第 3 行第 3 列

开始练习 →

三行四列的网格有几条路

从左上角走到右下角,只能往右或往下。运行下面这段程序: #include <algorithm> #include <iostream> #include <string> #include <ve

开始练习 →

horse 改成 ros 要几步

每步可以插入、删除或替换一个字符。运行下面这段程序: #include <algorithm> #include <iostream> #include <string> #include <vec

开始练习 →

写网格路径

补全 paths:第一行和第一列都是 1,其余每格等于上面加左边。输出 3 行 4 列的路径数。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

网格里放一块石头

同样 3 行 4 列,但 (1,1) 那一格有障碍,走不了。补全 paths_ob:障碍格的路径数是 0。输出还剩几条路。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

写编辑距离

补全 edit:第一行第一列是 0..n 和 0..m,字符相同取左上角,不同就在三个方向里取最小再加一。输出 horse 变 ros 的步数。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

三个二维 DP 一起交

网格路径已给出,补全带障碍的网格路径和编辑距离,输出「3 行 4 列/同样的网格但 (1,1) 有障碍/horse 变 ros」三个答案。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

状压里二进制位表示什么

第 1 步:s = 10,二进制 1010 第 2 步:右移 1 位再与 1:查这一位 第 3 步:或上 1 << 2:这一位置 1 第 4 步:与上 ~(1 << 1):这一位清 0 第 5 步:一个整数就是一个集

开始练习 →