题意
(1)一个机器人位于一个 m x n 网格的左上角
(2)机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角
(3)问总共有多少条不同的路径?
思路:【动态规划】
(1) 到中间每个位置的路径数目=左边点路径数目+右边的路径数目,即为
dp[i][j] = dp[i-1][j] + dp[i][j-1];
(2) 案例
m = 3, n =7【3行7列】&& dp[3][7] = 28;
(3) 代码
class Solution {
public:
int uniquePaths(int m, int n) {
int dp[m+1][n+1];
/*先把边界处理,到边界只有一种路径*/
/*因为只能往右边或者下边行走*/
for (int i = 1; i <= m; i++) {
dp[i][1] = 1;
}
for (int j = 1; j <= n; j++) {
dp[1][j] = 1;
}
/*中间:上边+左边路径数目,分类加和*/
for (int i = 2; i <= m; i++) {
for (int j = 2; j <= n; j++) {
dp[i][j] = dp[i-1][j] + dp[i][j-1];
}
}
return dp[m][n];
}
};