114. 不同的路径

有一个机器人的位于一个 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     }

 

posted @ 2017-12-20 09:31  三人木君  阅读(162)  评论(0编辑  收藏  举报