ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【蓝桥杯】走迷宫 [打印本页]

作者: 万万哇    时间: 2024-12-27 10:32
标题: 【蓝桥杯】走迷宫
题目:


解题思路:

        简朴的广度优先算法(BFS)
BFS 的特性
  1. import java.util.Scanner;
  2. import java.util.Queue;
  3. import java.util.ArrayDeque;
  4. // 1:无需package
  5. // 2: 类名必须Main, 不可修改
  6. public class Main {
  7.   //方向
  8.   static int[] dx = {0, 0, -1, 1};
  9.   static int[] dy = {1, -1, 0, 0};
  10.   //标记是否走过
  11.   static boolean[][] visted;
  12.   //矩阵大小
  13.   static int N, M;
  14.   //入口、出口位置
  15.   static int startx, starty, endx, endy;
  16.   public static void main(String[] args) {
  17.       Scanner scan = new Scanner(System.in);
  18.       //在此输入您的代码...
  19.       N = scan.nextInt();
  20.       M = scan.nextInt();
  21.       int [][] arr = new int[N][M];
  22.       visted = new boolean[N][M];
  23.       for (int i = 0; i < N; i++) {
  24.         for (int j = 0; j < M; j++) {
  25.           arr[i][j] = scan.nextInt();
  26.         }
  27.       }
  28.       startx = scan.nextInt();
  29.       starty = scan.nextInt();
  30.       endx = scan.nextInt();
  31.       endy = scan.nextInt();
  32.       System.out.println(bfs(arr, startx - 1, starty - 1));
  33.       scan.close();
  34.   }
  35.   public static int bfs(int[][] arr, int x, int y) {
  36.     //创建队列,更新位置
  37.     Queue<int[]> q = new ArrayDeque<>();
  38.     q.offer(new int[] {x, y, 0});
  39.     while(!q.isEmpty()) {
  40.       int[] poll = q.poll();
  41.       int x1 = poll[0];
  42.       int y1 = poll[1];
  43.       int steps = poll[2];
  44.       //判断是否到达终点
  45.       if (x1 == endx-1 && y1 == endy-1) {
  46.         return steps;
  47.       }
  48.       //根据四个方向走下一步
  49.       for (int i = 0; i < 4; i++) {
  50.         int xx = x1 + dx[i];
  51.         int yy = y1 + dy[i];
  52.         if (xx >=0 && yy >= 0 && xx < N && yy < M && !visted[xx][yy] && arr[xx][yy] == 1) {
  53.           visted[xx][yy] = true;
  54.           q.offer(new int[] {xx, yy, steps + 1});
  55.         }
  56.       }
  57.     }
  58.     return -1;
  59.   }
  60. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4