这题最重要的是思路,当走到最后一行的时候,只能向右,只有一条路,当走到最后一列时,只能向下,只有一条路,其他时候可以向下或向右
- 递归的结束就是m==1或n==1,向下和向右当下只能选其一,所以要么是m-1,要么是n-1,加起来就可以。
- 动态规划的意思我理解是不走重复的路,那就把计算过的地方存下来即可。
import java.util.*;
public class Solution {
/**
*
* @param m int整型
* @param n int整型
* @return int整型
*/
public int uniquePaths (int m, int n) {
// write code here
// 递归
// if(m==1 || n==1)return 1;
// return uniquePaths(m-1,n)+uniquePaths(m,n-1);
// 动态规划
int[][] arr = new int[m+1][n+1];
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
if(i==1){
arr[i][j]=1;
continue;
}
if(j==1){
arr[i][j]=1;
continue;
}
arr[i][j]= arr[i-1][j]+arr[i][j-1];
}
}
return arr[m][n];
}
}