前言:做题需要冷静,每个问题拆分,思路有了就很简单。但是,平时代码一定要多写,否则一些函数和特殊性质死活都想不出来,也不要死磕一道题……导致有另一题都没有思考过,惨痛的教训!虚心学习,老实刷题!

字节测试开发笔试

走迷宫

小红站在一个n行m列的迷宫里。迷宫中1代表墙壁,0代表走道,迷宫的四周也被墙壁包围,题目中的输入没有画出来。
小红有WASD四种操作,其中‘W’代表向上走,‘S’代表向下走,‘A’代表向左走,‘D’代表向右走。
但当小红某一次操作会撞墙的时候,小红会站在原地不动。
已知小红的初始位置在左上角,小红想知道自己的最终位置是多少。

代码实现

import java.util.*;

public class main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int q = sc.nextInt();
        sc.nextLine();
        int[][] graph = new int[n][m];
        for(int i = 0; i < n; i++){
            String line = sc.nextLine();
            for(int j = 0; j < m; j++){
                graph[i][j] = line.charAt(j) - "0";        //转换为Char再减去0,可以得到这个位置上的数字;字符-字符→数值的运算
            }
        }
        String operate = sc.nextLine();
        char[] op = operate.toCharArray();
        int[] ans = help(graph, op);
        System.out.println(ans[0] + " " + ans[1]);
    }
    
    public int[] help(int[][] graph, char[] op){
        int curX = 0, curY = 0;
        int n = graph.length, m = graph[0].length;    //二维数组直接length为数组行数,praph[0].length代表0行所代表的的长度
        int index = 0;
        while(index < op.length){
            if(op[index] == 'W'){
                curX--;
                if(curX < 0 || curX >= n || graph[curX][curY] == 1){
                    curX++;
                }
            }
            if(op[index] == 'S'){
                curX++;
                if(curX < 0 || curX >= n || graph[curX][curY] == 1){
                    curX--;
                }
            }
            if(op[index] == 'A'){
                curY--;
                if(curY < 0 || curX >= m || graph[curX][curY] == 1){
                    curY++;
                }
            }
            if(op[index] == 'D'){
                curY++;
                if(curY < 0 || curX >= n || graph[curX][curY] == 1){
                    curY--;
                }
            }
            index++;
        }
        return new int[]{curX,curY};
    }
}
Last modification:March 4th, 2022 at 10:21 pm
如果觉得我的文章对你有用,请随意赞赏
END
本文作者:
文章标题:春招所遇到的笔试代码题
本文地址:http://feiqiuz.com/index.php/archives/16/
版权说明:若无注明,本文皆MixZou的小窝原创,转载请保留文章出处。