//机器人走迷宫 public void doMaze(int x, int y, int[][] obstacles) { int[][] ints = new int[x][y]; //将障碍位置赋值1 for (int[] obstacle : obstacles) { ints[obstacle[0]][obstacle[1]] = 1; } this.nextMaze(ints, 0, 0); System.out.println("xx"); } private boolean nextMaze(int[][] ints, int x, int y) { //当前格子无法进入(超过下标) if (x >= ints.length || y >= ints[0].length) { return false; } //当前是障碍物 if(ints[x][y] == 1){ return false; } //当前格子到达终点,返回可通行 if (x == ints.length - 1 &;&; y == ints[0].length - 1) { ints[x][y] = 2; return true; } //往之后的格遍历,其中有一个为可通行,则设置当前格为可通行 boolean b = this.nextMaze(ints, x + 1, y); b = b | this.nextMaze(ints, x, y + 1); //当前可进入但是不可到达终点 ints[x][y] = b ? 2 : 3; return b; } 结果是将二维数组的障碍物赋值为1 不可达为0 陷阱为3 可达为2 ,简单测试了一下没啥问题应该
点赞 1

相关推荐

流浪的神仙:无恶意,算法一般好像都得9硕才能干算法太卷啦
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务