dsadasd
//动态规划
class Solution {
public int uniquePaths(int m, int n) {
int[][] dp = new int[m][n];
//边界
for(int i=0 ; i<m ; i++){
dp[i][0] = 1;
}
for(int j=0 ; j<n ; j++){
dp[0][j] = 1;
}
//转移方程
for(int i=1 ; i<m ; i++){
for(int j=1 ; j<n ; j++){
dp[i][j] = dp[i-1][j] + dp[i][j-1];
}
}
return dp[m-1][n-1];
}
}
// 我们求表达式,从初始点到结尾一共要走移动m+n-2次,我们要在其中m-1次向下
// 也就是一共(m+n-2)!/[(m-1)!*(n-1)!]=(m+n-2)*(m+n-3)*...*n/(m-1)!
class Solution {
public int uniquePaths(int m, int n) {
long ans = 1; //注意用long ,要不然可能溢出
for(int x=1 , y=n ; x < m ; x++ , y++){
ans=ans*y/x;
}
return (int)ans;
}
}