diff --git a/docs/chapter_backtracking/permutations_problem.md b/docs/chapter_backtracking/permutations_problem.md index e98f405fd..a7c2d5b2a 100644 --- a/docs/chapter_backtracking/permutations_problem.md +++ b/docs/chapter_backtracking/permutations_problem.md @@ -87,8 +87,8 @@ 请注意,虽然 `selected` 和 `duplicated` 都用作剪枝,但两者的目标是不同的。 -- **重复选择剪枝**:整个搜索过程中只有一个 `selected` 。它记录的是当前状态中包含哪些元素,作用是避免某个元素在 `state` 中重复出现。 -- **相等元素剪枝**:每轮选择(即每个开启的 `backtrack` 函数)都包含一个 `duplicated` 。它记录的是在遍历中哪些元素已被选择过,作用是保证相等元素只被选择一次。 +- **重复选择剪枝**:整个搜索过程中只有一个 `selected` 。它记录的是当前状态中包含哪些元素,作用是防止 `choices` 中的任一元素在 `state` 中重复出现。 +- **相等元素剪枝**:每轮选择(即每个调用的 `backtrack` 函数)都包含一个 `duplicated` 。它记录的是在本轮遍历(即 `for` 循环)中哪些元素已被选择过,作用是保证相等的元素只被选择一次。 下图展示了两个剪枝条件的生效范围。注意,树中的每个节点代表一个选择,从根节点到叶节点的路径上的各个节点构成一个排列。