文章目录
Lintcode 114:Unique Paths
题意:给定m行n列的网格,有一个机器人从左上角(0,0,)出发,每一步可以向下或者向右走一步
求解:有多少种不同的方式走到右下角?
动态规划组成部分一:确定状态
- 最后一步:无论用何种方式走到终点,最后一步一定是
– 向右 或者 向下
子问题
如果机器人有x种方式从左上角走到 (m-2,n-1),有Y种方式从左上角走到(m-1,n-2),则机器人有 X+Y 种方式走到(m-1,n-1),(m-1,n-1)即图中机器人所占位置。
- 问题转换为:有多少种方法从左上角走到 (m-2,n-1) 和 (m-1,n-2)
- 原题要求有多少种方式从左上角走到 (m-1,n-1)
- 子问题
- 状态:设 f [ i ] [ j ] f[i][j] f[i][j]表示有多少种走到 (i,j)
动态规划组成部分二:转移方程
- 对于任意一个格子 (i,j)
f [ i ] [ j ] = f [ i − 1 ] [ j ] + f [ i ] [ j − 1 ] f[i][j] = f[i-1][j] + f[i][j-1] f[i][j]=f[i−1