写一个全排列
补全 perm_dfs:把 a 里的数排成一排,用 used 记住哪些已经用过。输出一共有几种排法。 (本题用 g++ -std=c++17 -O0 编译。)
写一个组合
补全 comb_dfs:从 1、2、3、4 里取 2 个,每层只从上一个选过的后面挑。输出一共有几种取法。 (本题用 g++ -std=c++17 -O0 编译。)
排列组合子集三样一起数
一次算出三个数:1、2、3 的全排列个数,从 1、2、3、4 里取 2 个的组合个数,1、2、3 的子集个数。三个数用 / 拼起来输出。 (本题用 g++ -std=c++17 -O0 编译。)
回溯框架的三步是什么(C++)
回溯的标准框架是【0】。
撤销这一步在做什么
第 1 步:已经放了 1 第 2 步:选择:放 2,标记 2 第 3 步:探索:带着它往下走 第 4 步:撤销:两样都改回来 第 5 步:现场和选 2 之前一样 1 2 3 1 2 回溯里的「撤销」是【0】。
忘了撤销会怎样
忘了写撤销那一步,结果会【0】。
什么时候记下一个解(C++)
回溯里记录一个解的时机是【0】。
标准模板跑出来是什么
用标准回溯模板生成 1、2、3 的全排列。运行下面这段程序: #include <cstdlib> #include <iostream> #include <string> #include <v
把三步写全
补全 perm_dfs 的循环体:选择(标记 + 入路径)、探索(递归)、撤销(取消标记 + 出路径)。输出解的个数。 (本题用 g++ -std=c++17 -O0 编译。)
修一个漏了撤销的版本
下面这个版本只撤销了 used,忘了把 path 弹出来,跑出来只剩 1 个解。把它修好,输出修好之后解的个数。 (本题用 g++ -std=c++17 -O0 编译。)