有一个机器人的位于一个 m × n 个网格左上角。
机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角。
问有多少条不同的路径?
注意事项
n和m均不超过100
样例
给出 m = 3
和 n = 3
, 返回 6
.
给出 m = 4
和 n = 5
, 返回 35
.
一个比较典型的DP问题,可以把题目转换成从左下角到右上角,只能往东北方向移动,结果是一样的。
令从出发点到某个点(i,j)的所有可能路径数量为P(i, j)
那么可以写出update公式,P(i,j)=P(i-1, j)+ P (i, j-1)
Basecase我们需要初始化出发点为1.
1 int uniquePaths(int m, int n) { 2 // write your code here 3 vector<vector<int>> matrix(m, vector<int>(n, 1)); 4 for(int i=1;i<m;i++){ 5 for(int j=1;j<n;j++){ 6 matrix[i][j]=matrix[i-1][j]+matrix[i][j-1]; 7 } 8 } 9 return matrix[m-1][n-1]; 10 }