机器人走方格_牛客网

题目:机器人走方格
有一个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));
    }
}
发布了71 篇原创文章 · 获赞 2 · 访问量 7480

猜你喜欢

转载自blog.csdn.net/weixin_42512675/article/details/103126984