mirror of
https://github.com/krahets/hello-algo.git
synced 2026-07-12 07:26:07 +00:00
build
This commit is contained in:
@@ -102,7 +102,7 @@ $$
|
||||
|
||||
根据以上分析,我们已经可以直接写出动态规划代码。然而子问题分解是一种从顶至底的思想,因此按照“暴力搜索 $\rightarrow$ 记忆化搜索 $\rightarrow$ 动态规划”的顺序实现更加符合思维习惯。
|
||||
|
||||
### 方法一:暴力搜索
|
||||
### 1. 方法一:暴力搜索
|
||||
|
||||
从状态 $[i, j]$ 开始搜索,不断分解为更小的状态 $[i-1, j]$ 和 $[i, j-1]$ ,包括以下递归要素:
|
||||
|
||||
@@ -326,7 +326,7 @@ $$
|
||||
|
||||
每个状态都有向下和向右两种选择,从左上角走到右下角总共需要 $m + n - 2$ 步,所以最差时间复杂度为 $O(2^{m + n})$ 。请注意,这种计算方式未考虑临近网格边界的情况,当到达网络边界时只剩下一种选择。因此实际的路径数量会少一些。
|
||||
|
||||
### 方法二:记忆化搜索
|
||||
### 2. 方法二:记忆化搜索
|
||||
|
||||
我们引入一个和网格 `grid` 相同尺寸的记忆列表 `mem` ,用于记录各个子问题的解,并将重叠子问题进行剪枝。
|
||||
|
||||
@@ -588,7 +588,7 @@ $$
|
||||
|
||||
<p align="center"> 图:记忆化搜索递归树 </p>
|
||||
|
||||
### 方法三:动态规划
|
||||
### 3. 方法三:动态规划
|
||||
|
||||
基于迭代实现动态规划解法。
|
||||
|
||||
@@ -895,7 +895,7 @@ $$
|
||||
|
||||
<p align="center"> 图:最小路径和的动态规划过程 </p>
|
||||
|
||||
### 状态压缩
|
||||
### 4. 状态压缩
|
||||
|
||||
由于每个格子只与其左边和上边的格子有关,因此我们可以只用一个单行数组来实现 $dp$ 表。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user