public int uniquePaths(int m, int n) {
if(m==1||n==1)return 1;
int[][] matrix = new int[m][n];
matrix[m-1][n-1] = 1;
for(int i=m-1;i>0;i--){
for(int j=n-1;j>0;j--){
if(j==n-1){
matrix[i-1][j] = matrix[i][j];
}else{
matrix[i-1][j] = matrix[i][j]+matrix[i-1][j+1];
}
if(i==m-1){
matrix[i][j-1] = matrix[i][j];
}else{
matrix[i][j-1] = matrix[i][j]+matrix[i+1][j-1];
}
}
}
matrix[0][0] = matrix[0][1]+matrix[1][0];
return matrix[0][0];
}
https://leetcode.com/problems/unique-paths/
做这种图形题一定要动手画图,考虑边界条件,只有图形才是最直观的,不能空想。