存地址和存内容一起跑

写两个版本跑 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

开始练习 →

第一步排列组合子集

最终作品第一步:写出 perm、comb、subs 的递归部分,输出三个个数(1、2、3 全排列 / 1、2、3、4 取 2 / 1、2、3 子集)。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

第二步把路径记对

写出撤销写全、存内容的 perm,输出解的个数和第一个解。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

第三步剪枝且证明没剪错

写出 naive 和 pruned(1 到 5 排一排、挨着的不能是连号),输出不剪枝结点数 / 剪枝结点数 / 结果一致或结果不一致。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

第四步 N 皇后

写出 queen_ok 和 queens_dfs,把 n = 4、5、6、7 各跑一遍,四个解数拼起来输出。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →