mirror of
https://github.com/CyC2018/Interview-Notebook.git
synced 2026-11-01 03:23:42 +00:00
Update 12. 矩阵中的路径.md
补充查找 bfce 的回溯与状态恢复示例说明,更新回溯步骤配图。
This commit is contained in:
+4
-2
@@ -12,9 +12,11 @@
|
||||
|
||||
## 解题思路
|
||||
|
||||
使用回溯法(backtracking)进行求解,它是一种暴力搜索方法,通过搜索所有可能的结果来求解问题。回溯法在一次搜索结束时需要进行回溯(回退),将这一次搜索过程中设置的状态进行清除,从而开始一次新的搜索过程。例如下图示例中,从 f 开始,下一步有 4 种搜索可能,如果先搜索 b,需要将 b 标记为已经使用,防止重复使用。在这一次搜索结束之后,需要将 b 的已经使用状态清除,并搜索 c。
|
||||
使用回溯法(backtracking)进行求解,它是一种暴力搜索方法,通过搜索所有可能的结果来求解问题。回溯法在一次搜索结束时需要进行回溯(回退),将这一次搜索过程中设置的状态进行清除,从而开始一次新的搜索过程。
|
||||
|
||||
<div align="center"> <img src="pics/matrix-path-backtrack.png" width="500px"/> </div><br>
|
||||
以查找 bfce 为例:从 b 走到 f 后,f 的左右各有一个 c,代码先试左边的 c。它的四周没有 e,这条路走不通,回溯时只清除这个 c 的标记,b 和 f 仍在当前路径上,标记保留;再试右边的 c,它下面就是 e,找到路径。标记的作用是防止同一条路径重复经过一个格子。
|
||||
|
||||
<div align="center"> <img src="pics/offer12-backtrack-steps.png" width="600px"/> </div><br>
|
||||
|
||||
```java
|
||||
private final static int[][] next = {{0, -1}, {0, 1}, {-1, 0}, {1, 0}};
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 96 KiB |
Reference in New Issue
Block a user