心路历程:
这道题基本就是Q-learning经典迷宫问题的简化版本,所以肯定是用动态规划了,毕竟RL中的时序差分估计法的本身也是来自于MC和动态规划的结合。如果正常正向思维思考的话,首先看不到问题明显的循环结构,考虑递归;然后把当前所处位置i,j当作状态,分析当前状态与下一个状态之间的联系。
注意的点:
1、虽然简单,但是要理解返回值中两个递归函数相加的含义
2、无论横向纵向走到边界值,都是只剩下一种走法了
解法:DP
class Solution:def uniquePaths(self, m: int, n: int) -> int:# 动态规划@cachedef dfs(i,j):if i == m-1 or j == n-1:return 1return 1*dfs(i+1, j) + 1*dfs(i, j+1)return dfs(0, 0)