求路径
题目描述:
一个机器人在m×n大小的地图的左上角(起点)。
机器人每次向下或向右移动。机器人要到达地图的右下角(终点)。
可以有多少种不同的路径从起点走到终点?
备注:m和n小于等于100,并保证计算结果在int范围内
示例:
输入:4,5
输出:35
题目链接:
思路:
一看这道题与我之前写的易理解的矩阵的最小路径和求法
有这异曲同工之处。用的都是动态规划(Dynamic Programming)思想。
我们同样设置一个n * m的矩阵array,这个矩阵的每个单元格存储的就是到该位置的路径数。
现在我们到纸上写一下过程(依据例子):
最后可以推理出:
代码:
import java.util.*;
public class Solution {
/**
*
* @param m int整型
* @param n int整型
* @return int整型
*/
public int uniquePaths (int m, int n) {
// write code here
int [][] array = new int [m][n];
//初始化第一列
for (int i = 0; i < m; i++) {
array[i][0] = 1;
}
//初始化第一行
for (int j = 1; j < n; j++) {
array[0][j] = 1;
}
for (int i = 1; i < m; i++) {
for (int j = 1; j < n; j++) {
array[i][j] = array[i - 1][j] + array[i][j - 1];
}
}
return array[m - 1][n - 1];
}
}