mirror of
https://github.com/krahets/hello-algo.git
synced 2026-08-10 11:00:59 +00:00
build
This commit is contained in:
@@ -21,7 +21,7 @@ status: new
|
||||
|
||||
**我们将规模为 $i$ 的汉诺塔问题记做 $f(i)$** 。例如 $f(3)$ 代表将 $3$ 个圆盘从 `A` 移动至 `C` 的汉诺塔问题。
|
||||
|
||||
### 考虑基本情况
|
||||
### 1. 考虑基本情况
|
||||
|
||||
对于问题 $f(1)$ ,即当只有一个圆盘时,则将它直接从 `A` 移动至 `C` 即可。
|
||||
|
||||
@@ -55,7 +55,7 @@ status: new
|
||||
|
||||
<p align="center"> 图:规模为 2 问题的解 </p>
|
||||
|
||||
### 子问题分解
|
||||
### 2. 子问题分解
|
||||
|
||||
对于问题 $f(3)$ ,即当有三个圆盘时,情况变得稍微复杂了一些。由于已知 $f(1)$ 和 $f(2)$ 的解,因此可从分治角度思考,**将 `A` 顶部的两个圆盘看做一个整体**,执行以下步骤:
|
||||
|
||||
@@ -93,7 +93,7 @@ status: new
|
||||
|
||||
<p align="center"> 图:汉诺塔问题的分治策略 </p>
|
||||
|
||||
### 代码实现
|
||||
### 3. 代码实现
|
||||
|
||||
在代码中,我们声明一个递归函数 `dfs(i, src, buf, tar)` ,它的作用是将柱 `src` 顶部的 $i$ 个圆盘借助缓冲柱 `buf` 移动至目标柱 `tar` 。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user