From 4307372a5be4d9cf32b3b05f67996bf62435d421 Mon Sep 17 00:00:00 2001 From: krahets Date: Sat, 9 Sep 2023 00:51:48 +0800 Subject: [PATCH] build --- chapter_array_and_linkedlist/index.md | 2 +- .../backtracking_algorithm.md | 26 +++---------------- 2 files changed, 4 insertions(+), 24 deletions(-) diff --git a/chapter_array_and_linkedlist/index.md b/chapter_array_and_linkedlist/index.md index 6bcc368bb..49f3fb846 100644 --- a/chapter_array_and_linkedlist/index.md +++ b/chapter_array_and_linkedlist/index.md @@ -13,7 +13,7 @@ icon: material/view-list-outline !!! abstract - 数据结构的世界如同一睹厚实的砖墙。 + 数据结构的世界如同一堵厚实的砖墙。 数组的砖块整齐排列,逐个紧贴。链表的砖块分散各处,连接的藤蔓自由地穿梭于砖缝之间。 diff --git a/chapter_backtracking/backtracking_algorithm.md b/chapter_backtracking/backtracking_algorithm.md index adb297a49..7511aed4a 100644 --- a/chapter_backtracking/backtracking_algorithm.md +++ b/chapter_backtracking/backtracking_algorithm.md @@ -526,8 +526,6 @@ comments: true if root.val == 7: # 记录解 res.append(list(path)) - path.pop() - return pre_order(root.left) pre_order(root.right) # 回退 @@ -548,8 +546,6 @@ comments: true if (root->val == 7) { // 记录解 res.push_back(path); - path.pop_back(); - return; } preOrder(root->left); preOrder(root->right); @@ -572,8 +568,6 @@ comments: true if (root.val == 7) { // 记录解 res.add(new ArrayList<>(path)); - path.remove(path.size() - 1); - return; } preOrder(root.left); preOrder(root.right); @@ -596,8 +590,6 @@ comments: true if (root.val == 7) { // 记录解 res.Add(new List(path)); - path.RemoveAt(path.Count - 1); - return; } preOrder(root.left); preOrder(root.right); @@ -620,8 +612,6 @@ comments: true if root.Val.(int) == 7 { // 记录解 *res = append(*res, *path) - *path = (*path)[:len(*path)-1] - return } preOrderIII(root.Left, res, path) preOrderIII(root.Right, res, path) @@ -644,8 +634,6 @@ comments: true if root.val == 7 { // 记录解 res.append(path) - path.removeLast() - return } preOrder(root: root.left) preOrder(root: root.right) @@ -668,8 +656,6 @@ comments: true if (root.val === 7) { // 记录解 res.push([...path]); - path.pop(); - return; } preOrder(root.left, path, res); preOrder(root.right, path, res); @@ -696,8 +682,6 @@ comments: true if (root.val === 7) { // 记录解 res.push([...path]); - path.pop(); - return; } preOrder(root.left, path, res); preOrder(root.right, path, res); @@ -724,8 +708,6 @@ comments: true if (root.val == 7) { // 记录解 res.add(List.from(path)); - path.removeLast(); - return; } preOrder(root.left, path, res); preOrder(root.right, path, res); @@ -749,8 +731,6 @@ comments: true if node.borrow().val == 7 { // 记录解 res.push(path.clone()); - path.remove(path.len() - 1); - return; } pre_order(res, path, node.borrow().left.clone()); pre_order(res, path, node.borrow().right.clone()); @@ -1612,7 +1592,7 @@ comments: true vectorPopback(state); } - /* 前序遍历:例题三 */ + /* 回溯算法:例题三 */ void backtrack(vector *state, vector *choices, vector *res) { // 检查是否为解 if (isSolution(state)) { @@ -1655,7 +1635,7 @@ comments: true [class]{}-[func]{backtrack} ``` -根据题意,我们在找到值为 7 的节点后应该继续搜索,**因此需要将记录解之后的 `return` 语句删除**。图 13-4 对比了保留或删除 `return` 语句的搜索过程。 +根据题意,我们在找到值为 $7$ 的节点后应该继续搜索,**因此需要将记录解之后的 `return` 语句删除**。图 13-4 对比了保留或删除 `return` 语句的搜索过程。 ![保留与删除 return 的搜索过程对比](backtracking_algorithm.assets/backtrack_remove_return_or_not.png) @@ -1674,7 +1654,7 @@ comments: true | 名词 | 定义 | 例题三 | | ------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------- | | 解 Solution | 解是满足问题特定条件的答案,可能有一个或多个 | 根节点到节点 $7$ 的满足约束条件的所有路径 | -| 约束条件 Constraint | 约束条件是问题中限制解的可行性的条件,通常用于剪枝 | 路径中不包含节点 $3$ ,只包含一个节点 $7$ | +| 约束条件 Constraint | 约束条件是问题中限制解的可行性的条件,通常用于剪枝 | 路径中不包含节点 $3$ | | 状态 State | 状态表示问题在某一时刻的情况,包括已经做出的选择 | 当前已访问的节点路径,即 `path` 节点列表 | | 尝试 Attempt | 尝试是根据可用选择来探索解空间的过程,包括做出选择,更新状态,检查是否为解 | 递归访问左(右)子节点,将节点添加进 `path` ,判断节点的值是否为 $7$ | | 回退 Backtracking | 回退指遇到不满足约束条件的状态时,撤销前面做出的选择,回到上一个状态 | 当越过叶结点、结束结点访问、遇到值为 $3$ 的节点时终止搜索,函数返回 |