这题比较简单是一题dp算法的题目,参考算法课week7 discussion的内容。任一点到终点的path数是其右边点和下方点到终点的path数之和。
public class Solution {
public int uniquePaths(int m, int n) {
if(m < 1 || n < 1) return 0;
if(m == 1 || n == 1) return 1;
// else return uniquePaths(m - 1, n) + uniquePaths(m, n - 1);
int table[][] = new int[m][n];
for(int i = 0; i < m; i++) table[i][0] = 1;
for(int i = 0; i < n; i++) table[0][i] = 1;
for(int i = 1; i < m; i++) {
for(int j = 1; j < n; j++) table[i][j] = table[i-1][j] + table[i][j-1];
}
return table[m-1][n-1];
}
}
fight on!