问题描述
一个机器人在m×n大小的地图的左上角(起点)。
机器人每次向下或向右移动。机器人要到达地图的右下角(终点)。
可以有多少种不同的路径从起点走到终点?
输入描述:
输入m、n
输出描述:
输出路径的数量
示例
示例1
输入
2,1
输出
2
解决思路
分析
- 机器人只能向右和向下走,所以可以总结出规律如下(也可自己验证一下):
路径数=左侧的路径数+上侧的路径数
方法
- 通过循环或递归的方式解决
代码实现
public class Solution {
public int uniquePaths (int m, int n) {
// write code here
int[][] path = new int[m][n];
for (int i = 0; i < n; i++) {
path[0][i] = 1;
}
for (int i = 0; i < m; i++) {
path[i][0] = 1;
}
// 计算路径
for (int i = 1; i < m; i++) {
for (int j = 1; j < n; j++) {
// 机器人只能向右和向下走,所以可以总结出规律如下(也可自己验证一下)
// 路径计算的规律:路径数=左侧的路径数+上侧的路径数
path[i][j] = path[i][j - 1] + path[i - 1][j];
}
}
return path[m - 1][n - 1];
}
}
小伙伴如果想测试的话,可以直接到牛客网这个链接做测试