/**
* 问:给出一个二维矩阵,从左上角到右下角一共有多少路径?
* 解:
* 1、默认条件:只能往下走或往右走。
* 2、f(i)(j) = f(i-1)(j) + f(i)(j-1)
* 3、找到规律后,需要做的就是初始化,即i=0和j=0时对应的值。
*/
public class UniquePaths {
public int uniquePaths(int m, int n) {
// 创建二维数组结果集
int[][] result = new int[m][n];
// 做一些必要的初始化
for (int i=0; i<m; i++)
result[i][0] = 1;
for (int j=0; j<n; j++)
result[0][j] = 1;
// 根据规律找出右下角对应的路径数量
for (int i=1; i<m; i++) {
for (int j=1; j<n; j++)
result[i][j] = result[i-1][j] + result[i][j-1];
}
return result[m-1][n-1];
}
public static void main(String[] args) {
int m = 3;
int n = 3;
int num = new UniquePaths().uniquePaths(m, n);
System.out.println(m+ "*" + n + "的二维矩阵共有" + num + "种走法。");
}
}