撤销要撤哪些东西(C++)
回溯的撤销要覆盖【0】。
存地址会得到什么
这个版本记解时存的是全局数组 g_path 的地址。运行它,看解的个数和第一个解的内容: #include <cstdlib> #include <iostream> #include <string>
漏了 pop_back 剩几个解
这个版本撤销时只改回了 used,忘了把 path 弹出来。运行它: #include <cstdlib> #include <iostream> #include <string> #include &
把路径记对
补全 perm_dfs:记解时存 path 的内容,撤销时 used 和 path 两样都撤。输出解的个数和第一个解。 (本题用 g++ -std=c++17 -O0 编译。)
存地址和存内容一起跑
写两个版本跑 1、2、3:ptr_dfs 存 g_path 的地址,perm 存内容。把两者第一个解拼起来输出(存地址的在前),格式如 3,2,1/1,2,3。 (本题用 g++ -std=c++17 -O0 编译。)
两种漏撤销症状一样
三个版本跑 1、2、3:漏了 pop_back、漏了 used[i] = false、两样都撤销的正确版(正确版已给好,补全两个漏撤销的版本)。把三个解的个数拼起来输出(按这个顺序)。 (本题用 g++ -std=c++17 -O0 编译。
四个版本的解数摆一起
四个版本只输出各自解的个数:完全正确的版本、存地址的版本、漏了 pop_back、漏了 used 撤销。存地址和漏 used 两个版本已经给好,补全另外两个。四个数用 / 拼起来。 (本题用 g++ -std=c++17 -O0 编译。)
拿到搜索问题先想什么
第 1 步:目标:凑出 5 第 2 步:选 1,和是 1 第 3 步:再选 2,和是 3 第 4 步:再选 3 就是 6:超了,剪 第 5 步:选 4 是 7:也超了 第 6 步:退回去:1 加 4 正好 1 2 3 4 要用回溯解一个新问
交付回溯解要验什么
把一个带剪枝的回溯解交出去,必须验的是【0】。
四项一起对得上吗
运行下面这段程序: #include <cstdlib> #include <iostream> #include <string> #include <vector> using names