3434
3535为了避免重复计算,我们可以使用动态规划中的「表格处理方法」来处理。
3636
37- 这里我们使用「自底向上的递推方法」求解出子问题 $f(n - 2)$ 和 $f(n - 1)$ 的解,然后把结果存储在表格中,供随后的计算查询使用,从而避免大量的重复计算 。具体过程如下:
37+ 这里我们使用「自底向上的递推方法」求解出子问题 $f(n - 2)$ 和 $f(n - 1)$ 的解,然后把结果存储在表格中,供随后的计算查询使用。具体过程如下:
3838
39391 . 定义一个数组 $dp$,用于记录斐波那契数列中的值。
40402 . 初始化 $dp[ 0] = 0,dp[ 1] = 1$。
@@ -69,9 +69,9 @@ class Solution:
6969
7070首先,能够使用动态规划方法解决的问题必须满足以下三个特征:
7171
72- 1 . 最优子结构性质
73- 2 . 重叠子问题性质
74- 3 . 无后效性
72+ 1 . ** 最优子结构性质**
73+ 2 . ** 重叠子问题性质**
74+ 3 . ** 无后效性**
7575
7676### 2.1 最优子结构性质
7777
@@ -85,7 +85,7 @@ class Solution:
8585
8686### 2.2 重叠子问题性质
8787
88- > ** 重叠子问题性质** :指的是在求解子问题的过程中,有大量的子问题是重复的,一个子问题会在下一阶段的决策中可能会被多次用到 。如果有大量重复的子问题,那么只需要对求解一次 ,然后用表格将结果存储下来,以后使用时可以直接查询,不需要再次求解。
88+ > ** 重叠子问题性质** :指的是在求解子问题的过程中,有大量的子问题是重复的,一个子问题在下一阶段的决策中可能会被多次用到 。如果有大量重复的子问题,那么只需要对其求解一次 ,然后用表格将结果存储下来,以后使用时可以直接查询,不需要再次求解。
8989
9090![ ] ( https://qcdn.itcharge.cn/images/20230307175804.png )
9191
@@ -95,16 +95,14 @@ class Solution:
9595
9696> ** 无后效性** :指的是子问题的解(状态值)只与之前阶段有关,而与后面阶段无关。当前阶段的若干状态值一旦确定,就不再改变,不会再受到后续阶段决策的影响。
9797
98- 换句话说 ,** 一旦某一个子问题的求解结果确定以后,就不会再被修改** 。
98+ 也就是说 ,** 一旦某一个子问题的求解结果确定以后,就不会再被修改** 。
9999
100- 举个例子,下图是一个有向无环带权图,我们在求解从 $A$ 点到第 $F$ 点的最短路径问题时,假设当前已知从 $A$ 点到 $D$ 点的最短路径($2 + 7 = 11$)。那么无论之后的路径如何选择,都不会影响之前从 $A$ 点到 $D$ 点的最短路径长度。这就是「无后效性」。
100+ 举个例子,下图是一个有向无环带权图,我们在求解从 $A$ 点到 $F$ 点的最短路径问题时,假设当前已知从 $A$ 点到 $D$ 点的最短路径($2 + 7 = 11$)。那么无论之后的路径如何选择,都不会影响之前从 $A$ 点到 $D$ 点的最短路径长度。这就是「无后效性」。
101101
102- 如果一个问题具有 「后效性」,则可能需要先将其转化或者逆向求解来消除后效性,然后才可以使用动态规划算法。
102+ 而如果一个问题具有 「后效性」,则可能需要先将其转化或者逆向求解来消除后效性,然后才可以使用动态规划算法。
103103
104104![ ] ( https://qcdn.itcharge.cn/images/202303072158573.png )
105105
106-
107-
108106## 3. 动态规划的基本思路
109107
110108如下图所示,我们在使用动态规划方法解决某些最优化问题时,可以将解决问题的过程按照一定顺序(时间顺序、空间顺序或其他顺序)分解为若干个相互联系的「阶段」。然后按照顺序对每一个阶段做出「决策」,这个决策既决定了本阶段的效益,也决定了下一阶段的初始状态。依次做完每个阶段的决策之后,就得到了一个整个问题的决策序列。
@@ -141,9 +139,9 @@ class Solution:
141139
142140#### 4.1.2 题目大意
143141
144- ** 描述** :给定一个整数 ` n ` 。
142+ ** 描述** :给定一个整数 $n$ 。
145143
146- ** 要求** :计算第 ` n ` 个斐波那契数。
144+ ** 要求** :计算第 $n$ 个斐波那契数。
147145
148146** 说明** :
149147
0 commit comments