一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。
问总共有多少条不同的路径?
我们把机器人移动一格看做是走过的路程长度+1,那么机器人走到终点的路程是固定的为m+n-2,其中必须向下走m-1步,以及向右走n-1步
用高中排列组合的知识,存在的排列组合有:
public class Solution {
public int uniquePaths(int m, int n) {
int ans,x,y=0;//分子x,分母y
if(m>n) y=n-1;
else y=m-1;
x=m+n-2;
double i=1;
double j=1;//i,j使用double,否则会产生越界
while(y>0){
i*=x;
j*=y;
x--;
y--;
}
ans=(int)(i/j);
return ans;
}
}