题目:机器人走方格
有一个X*Y的网格,一个机器人只能从格点且只能向右或向下走,要从最上角走到右下角。设计一个算法,计算机器人有多少种算法。给定两个正整数int x,int y,请返回机器人的走法数目。保证x+y小于等于12。
分析:定义一个二维数组存放机器人的走法数目。
当机器人位于第一行时,不管走到几列,它的走法只有一种,即向右走;
同理,当机器人位于第一列时,不管它此时走到了第几行,走法也只有一种,即向下走;
当机器人位于其他某一个网格时,它的来源只会是它的上面一格[x-1][y] 或者左面一格[x][y-1](机器人只能从格点且只能向右或向下走),即有两种走法;
通过循环遍历求way[x-1][y-1] 即可求出机器人走到右下角所需的走法步数。
代码实现:
import java.util.*;
public class Robot {
public int countWays(int x, int y) {
int[][] way=new int[x][y];
for(int i=0;i<x;i++){//第一行
way[0][i]=1;
}
for(int j=0;j<y;j++){//第一列
way[j][0]=1;
}
for(int i=1;i<x;i++){
for(int j=1;j<y;j++){
way[i][j]=way[i-1][j]+way[i][j-1];
}
}
return way[x-1][y-1];
}
public static void main(String[] args) {
Robot robot=new Robot();
Scanner in=new Scanner(System.in);
int m=in.nextInt();
int n=in.nextInt();
System.out.println(robot.countWays(m,n));
}
}