第四步三个二维 DP
网格路径和带障碍的网格路径已给出,补全编辑距离,输出「3 行 4 列/(1,1) 有石头/horse 变 ros」三个答案。 (本题用 g++ -std=c++17 -O0 编译。)
交付独立设计 DP 状态
这是这条路线的最终作品。前四步的代码已经合在一起,补全状压版 tsp 和暴力版 tsp_brute,然后一次验完五条:0/1 背包 20、完全背包 25;二维和一维答案相同、格子数从 44 降到 11;石子合并 19、最长回文子序列 4;网
DP 表太大内存超限先想什么
一个 DP 在题目的内存限制里开不出二维表,最先该想的是【0】。
补写一维 0/1 背包
场景:实验机上 ~/work/dp/knap.cpp 读入物品和容量,knap01 还没写。 任务:补全 knap01:每件最多拿一次,只用一个一维数组。make 编译,./knap < sample.txt 自测。check 会用每
修好写反的循环方向
场景:~/work/dp/dir.cpp 本该算 0/1 背包(每件最多拿一次),可答案总是偏大:样例应该是 20,它却给出 25。 任务:找出并修好这个 bug。make 编译后用 sample.txt 自测,check 会用随机数据对拍
在 256 MB 里跑容量一百万
场景:~/work/dp/big.cpp 算 0/1 背包,小数据是对的。可 check 的大数据有 80 件物品、容量 1000000,而且只给 256 MB 内存、2 秒——原程序的二维 long long 表约 650 MB,根本开不
修好状压里的优先级
场景:~/work/dp/tsp.cpp 用状压 DP 求最短回路,样例应该输出 18,它却输出了 1000000000。 任务:代码里有两处运算符优先级写错了。修好它们,make 编译后用 sample.txt 自测。 可操作范围:只在分
补写编辑距离
场景:~/work/dp/edit.cpp 每行读两个单词,edit 还没写。 任务:补全 edit:把 a 改成 b 最少要几步(插入、删除、替换各算一步)。make 编译后用 sample.txt 自测,样例应该输出 3、5、0。 可操
图遍历为什么非要 visited
在图上遍历必须记住走过哪些点,因为【0】。
树遍历为什么不用这一步
第 1 步:从 A 出发,一路往下走 第 2 步:走到 B 第 3 步:走到 C 第 4 步:走到 F 第 5 步:走到 E 第 6 步:走到 D 第 7 步:D 的邻居是 A:又绕回来了 第 8 步:不标记,就会一圈圈转下去 第 9 步: