8.记忆化搜索
记忆化搜索就是对于某个子问题的解可能会被多次用到,那么就把子问题的解保存起来,以后用到的时候直接用,不用再计算一遍,以滑雪这道题为例,多条路径可能经过同一个点,那么就把这个点的值保存起来,只计算一次。
AcWing 901. 滑雪
实现思路:

状态表示
f[i][j]
,表示从点(i,j)
出发的最长路径长度集合划分可分为四种情况:从点
(i,j)
出发- 向左走到
(i,j-1)
,状态转换为f[i][j-1]+1
- 向右走到
(i,j+1)
,状态转换为f[i][j+1]+1
- 向上走到
(i-1,j)
,状态转换为f[i-1][j]+1
- 向下走到
(i+1,j)
,状态转换为f[i+1][j]+1
- 向左走到
注意:在向某个方向走时要判断是否走出边界以及所走的方向的值是否小于当前位置的值
没有给出固定出发点,所以要遍历每个点为起点出发
1 |
|