题目描述
-
有一个XxY的网格,一个机器人只能走格点且只能向右或向下走,要从左上角走到右下角。请设计一个算法,计算机器人有多少种走法。
-
给定两个正整数int x,int y,请返回机器人的走法数目。保证x+y小于等于12。
代码
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int x=scanner.nextInt();
int y=scanner.nextInt();
int solve = solve(x,y);
int solve2 = solve2(x,y);
System.out.println(solve);
System.out.println(solve2);
}
//x y较小不会造成栈溢出
private static int solve(int x, int y) {
if(x==1||y==1) {
return 1;
}
return solve(x-1,y)+solve(x, y-1);
}
//迭代
private static int solve2(int x, int y) {
if(x==1||y==1) {
return 1;
}
int[][] res=new int[x][y];
for (int i = 0; i < x; i++) {
res[i][0]=1;
}
for (int i = 0; i < y; i++) {
res[0][i]=1;
}
for (int i = 1; i < y; i++) {
for (int t = 1; t < x; t++) {
res[t][i]=res[t-1][i]+res[t][i-1];
}
}
return res[x-1][y-1];
}