当前位置: 首页 > wzjs >正文

快速建站哪里好网站建设 创意视频

快速建站哪里好,网站建设 创意视频,百度网页版下载,沈阳百度快照优化公司一,走迷宫 1.题目描述: 给定一个 NMNM 的网格迷宫 GG。GG 的每个格子要么是道路,要么是障碍物(道路用 11 表示,障碍物用 00 表示)。 已知迷宫的入口位置为 (x1,y1)(x1​,y1​),出口位置为 (x…

一,走迷宫

1.题目描述:

给定一个 N×MN×M 的网格迷宫 GG。GG 的每个格子要么是道路,要么是障碍物(道路用 11 表示,障碍物用 00 表示)。

已知迷宫的入口位置为 (x1,y1)(x1​,y1​),出口位置为 (x2,y2)(x2​,y2​)。问从入口走到出口,最少要走多少个格子。

2.实例:

输入第 11 行包含两个正整数 N,MN,M,分别表示迷宫的大小。

接下来输入一个 N×MN×M 的矩阵。若 Gi,j=1Gi,j​=1 表示其为道路,否则表示其为障碍物。

最后一行输入四个整数 x1,y1,x2,y2x1​,y1​,x2​,y2​,表示入口的位置和出口的位置。

1≤N,M≤1021≤N,M≤102,0≤Gi,j≤10≤Gi,j​≤1,1≤x1,x2≤N1≤x1​,x2​≤N,1≤y1,y2≤M1≤y1​,y2​≤M。

示例 1

输入

5 5 
1 0 1 1 0
1 1 0 1 1 
0 1 0 1 1
1 1 1 1 1
1 0 0 0 1
1 1 5 5 

输出

8

3.思路:

  1. 输入处理:读取输入数据并转换为迷宫矩阵。

  2. 坐标转换:将入口和出口的位置转换为从0开始的索引,方便数组操作。

  3. 障碍物检查:直接检查入口和出口是否为障碍物,如果是则立即返回-1。

  4. BFS初始化:使用队列来管理待处理的节点,距离数组记录每个节点的最短步数。

  5. BFS遍历:从入口开始,逐层扩展遍历所有可能的路径,每次处理一个节点时检查其四个方向,更新可达节点的距离并加入队列。找到出口时立即输出结果,否则遍历结束后返回-1。

4:代码:

import java.util.*;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int m = scanner.nextInt();int[][] maze = new int[n][m];// 读取迷宫数据for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {maze[i][j] = scanner.nextInt();}}// 读取起点和终点坐标并转换为0-based索引int x1 = scanner.nextInt() - 1;int y1 = scanner.nextInt() - 1;int x2 = scanner.nextInt() - 1;int y2 = scanner.nextInt() - 1;// 检查起点或终点是否为障碍物if (maze[x1][y1] == 0 || maze[x2][y2] == 0) {System.out.println(-1);return;}// 处理起点和终点相同的情况if (x1 == x2 && y1 == y2) {System.out.println(1);return;}// 初始化距离数组和队列int[][] dist = new int[n][m];for (int[] row : dist) {Arrays.fill(row, -1);}dist[x1][y1] = 1;Queue<int[]> queue = new LinkedList<>();queue.add(new int[]{x1, y1});// 四个方向移动的增量int[][] directions = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};// BFS遍历while (!queue.isEmpty()) {int[] current = queue.poll();int x = current[0];int y = current[1];for (int[] dir : directions) {int nx = x + dir[0];int ny = y + dir[1];// 检查新坐标是否在迷宫范围内if (nx >= 0 && nx < n && ny >= 0 && ny < m) {// 检查是否是道路且未被访问过if (maze[nx][ny] == 1 && dist[nx][ny] == -1) {dist[nx][ny] = dist[x][y] + 1;// 检查是否到达终点if (nx == x2 && ny == y2) {System.out.println(dist[nx][ny]);return;}queue.add(new int[]{nx, ny});}}}}// 无法到达终点System.out.println(-1);}
}

http://www.dtcms.com/wzjs/792713.html

相关文章:

  • 网站 icp备案制作一个app需要什么技术
  • 网站建设下坡路个人网站能不能做论坛
  • 科技信息网站系统建设方案二级域名是什么意思
  • 邢台高端网站建设公司开源网站建设实习心得
  • 电子商城网站源码做网站哈尔滨
  • 四川省住房和城乡建设网站企业网站的建设对于网络品牌的塑造作用
  • 怎么做网站宣传建设视频网站设计意义
  • 蓝图网站建设免费做公众号的网站
  • 做网站建站点建立网站容量
  • 网站域名包括哪些oa系统的概念
  • 网站里的动态是如何制作框架网站模板
  • 网站建设提供排名建设音乐主题网站
  • 做企业网站10万起步敬请期待图片素材
  • google网站地图格式地方门户网站建设多少钱
  • 网站建设所需人力时间为什么不用h5做网站
  • 北京网站建设的公wordpress区别
  • 网站开发流程知乎点击最多的网站
  • 西安专题门户响应式网站建设js检测网站是否能打开
  • 河北住房和城乡建设局网站首页免费创建社区平台
  • 网页就是一个网站的首页用手机制作ppt的软件
  • 网站APP注册做任务沈阳seo排名优化推广
  • 备案的域名做电影网站吗域名注册完成后怎么做网站
  • 1688网站网页设计师网站
  • 淘宝客做网站备注怎么写的微信小程序开发需要什么技能
  • 商务封面图片素材宜昌怎样优化网站建设
  • wordpress建网站缺点雏鸟短视频app软件下载网站
  • 手表交易网站网页的构成
  • 免费申请企业网站河南智能网站建设哪家好
  • 关于企业的网站站酷网素材图库排版
  • 农村网站建设调查报告做网站都有那些步骤