class Solution {
public:
int uniquePaths(int m, int n) {
m--;n--;
int cdown = m + n;
int cup = m < n?m : n;
int k =cup;
long long ans = 1;;
while(k--){
ans *= cdown;
cdown--;
}
k=cup ;
while(k){
ans /= k;
k--;
}
return (int)ans;
}
};
问的是从左上角,走到地图的右下角,有多少种走法,实际上就是求组合数C
即求C(min(m-1,n-1), m+n+1)
注意,计算时,那个用来储存乘积的数字要为long long。