⚠️ 有重复元素,去重前后差多少

[1, 2, 2] 里有两个一样的 2。一边不去重、一边去重,各生成一遍全部子集。运行下面这段程序: def subs(a): res = [] path = [] def dfs(s): res.a

开始练习 →

写一个子集

补全 subs:生成 [1,2,3] 的全部子集。注意子集要在每一层都记一次,不是只在最底下记。 输出子集的个数。

开始练习 →

写一个去重的子集

补全 subs_uniq:先排序,再在同一层跳过和前一个相同的元素。对 [1, 2, 2] 输出子集个数。

开始练习 →

写一个"选出和为目标"的搜索

补全 pick_sum:从 [1,2,3,4] 里选若干个(每个最多选一次),和正好等于 5。 顺手剪一刀:和已经超过目标就别往下走了。输出有几种选法。

开始练习 →

⚠️ 三样一起数

一次输出三个数:[1,2,3] 的子集个数、[1,2,2] 去重后的子集个数、从 [1,2,3,4] 里选出和为 5 的选法数。

开始练习 →

N 皇后有哪几类约束

N 皇后要求任意两个皇后【0】。

开始练习 →

怎么判断两个皇后在同一斜线

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

开始练习 →

4 皇后有几个解

4×4 的棋盘上放 4 个互不攻击的皇后。运行下面这段程序: def ok(col, c): r = len(col) for i in range(r): if col[i] == c or abs(col

开始练习 →

8 皇后呢

换成经典的 8×8 棋盘。运行同样的程序: def ok(col, c): r = len(col) for i in range(r): if col[i] == c or abs(col[i] - c)

开始练习 →

写冲突判断

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

开始练习 →