三样子集问题一起数

一次输出三个数:1、2、3 的子集个数,1、2、2 去重后的子集个数,从 1、2、3、4 里选出和为 5 的选法数。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

N 皇后有哪几类约束

第 1 步:一行放一个皇后 第 2 步:第 1 行放在第 1 列 第 3 步:第 2 行躲开它,放第 3 列 第 4 步:第 3 行四格全被攻击 第 5 步:退回第 2 行,换第 4 列 第 6 步:第 3 行这回放得下了 ♛ ♛ ♛ ♛

开始练习 →

怎么判断同一斜线

两个皇后在同一条斜线上,判据是【0】。

开始练习 →

4 皇后有几个解

4×4 的棋盘上放 4 个互不攻击的皇后。运行下面这段程序: #include <cstdlib> #include <iostream> #include <string> #include <v

开始练习 →

8 皇后呢

换成经典的 8×8 棋盘。运行同样的程序: #include <cstdlib> #include <iostream> #include <string> #include <vector>

开始练习 →

写冲突判断

补全 queen_ok:col 是前面每一行皇后所在的列,现在要在第 col.size() 行的第 c 列放一个,判断放不放得下。验两种情况:queen_ok({1}, 3) 和 queen_ok({1}, 2),两个结果拼起来输出。 (本

开始练习 →

写 N 皇后

补全 queens_dfs:一行放一个,放之前先用 queen_ok 查一遍,放不下就跳过。输出 4 皇后的解数。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

四种规模各有几个解

把 n = 4、5、6、7 各跑一遍,把四个解数拼起来输出。(这四个数不是递增的——留意 6 比 5 还少。) (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

剪枝在 N 皇后上省了多少

写两个版本跑 n = 5:剪枝版放之前就用 queen_ok 查;不剪枝版把 5 行全铺满,最后才逐对检查。输出四样:剪枝解数 / 不剪枝解数 / 剪枝结点数 / 不剪枝结点数。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

为什么不能只存 path 的地址

第 1 步:记下第 1 个:1 2 3 第 2 步:记第 2 个时,解1 也跟着变 第 3 步:三行永远一模一样 第 4 步:它们指着同一块内存 解1 解2 解3 1 2 3 3 2 1 3 2 2 1 3 2 1 3 2 1 3 用全局数

开始练习 →