它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。

package algorithm_java;import java.util.Scanner;
import java.util.Stack;/*** 路径问题 可以走的最小路径*/class Node{public int x;public int y;Node(int x, int y){this.x = x;this.y = y;}
}public class Labyrinth_Path {public static void main(String[] args){Scanner scanner = new Scanner(System.in);int labyrinth[][] = new int[5][5];for (int i = 0; i < 5; i++) {for (int j = 0; j < 5; j++) {labyrinth[i][j] = scanner.nextInt();}}judge(labyrinth);}private static void judge(int[][] labyrinth_1) {int[][] dir = {{1, 0}, {0, 1}}; // 行走的方向Stack<Node> stack = new Stack<>(); // 设置一个栈来存储信息int [][] visited = new int[5][5]; // 标记是否被访问 和labyrinth大小一致Node start = new Node(0, 0); // 开始的节点信息Node end = new Node(4, 4); // 结束的位置visited[start.x][start.y] = 1; // 将起点信息标记为1stack.push(start); // 将起点信息压栈while (!stack.isEmpty()){ // 不为空没有找到解boolean flag = false; // 标记是否找了一个方向Node pek = stack.peek();if (pek.x == end.x && pek.y == end.y){break;} else {for (int i = 0; i < 2; i++) {Node nbr = new Node(pek.x + dir[i][0], pek.y + dir[i][1]);// 判断是否满足条件if (nbr.x >= 0 && nbr.x < 5 && nbr.y >= 0 && nbr.y < 5 && labyrinth_1[nbr.x][nbr.y] == 0 && visited[nbr.x][nbr.y] == 0){stack.push(nbr);visited[nbr.x][nbr.y] = 1;flag = true;break;}}if (flag){ // 找到了方向  就不用执行出栈 一直往下找continue;}stack.pop(); // 两个方向都不可以出栈
            }}Stack<Node> stackRev = new Stack<>(); // 调整栈的内容while (!stack.isEmpty()){stackRev.push(stack.pop());}while (!stackRev.isEmpty()){System.out.println("(" + stackRev.peek().x + "," + stackRev.peek().y + " )");stackRev.pop();}}
}

转载于:https://www.cnblogs.com/future-dream/p/10695104.html

Java————迷宫问题相关推荐

  1. java 迷宫游戏_Java小项目之迷宫游戏的实现方法

    项目要求: 一个网格迷宫由n行n列的单元格组成,每个大院个要么是空地(用0表示),要么是障碍物(用1表示),你的任务是找一条从起点到终点的移动序列,其中只能上下左右移动到相邻单元格.任何时候都不能在有 ...

  2. java迷宫寻找最短路径

    利用广度优先遍历算法的特点,由于迷宫每次只能走一格,所以对于任意一个节点,bfs第一次到达该点时一定是最短路径 直接上代码: package com.common.utils;import java. ...

  3. java迷宫生成代码_通过深度优先搜索产生的迷宫的Java代码

    import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java ...

  4. java迷宫队列实现_Creator 迷宫生成: DFS 与 BFS 算法实现

    前言: 我的迷宫代码的实现受到 [liuyubobobo] 的影响. liuyubobobo 迷宫的实现: GUI 部分使用 java Swing,编程语言是 Java. **我的迷宫代码实现: ** ...

  5. java迷宫_java实现迷宫算法--转

    沿着所有方向进行探测,有路径则走,没有路径则从栈中回退. 回溯法是一种不断试探且及时纠正错误的搜索方法,下面的求解过程采用回溯法.从入口出发,按某一方向向前探索,若能走通(未走过的),即某处可以到达, ...

  6. java 迷宫最短路径_用Java实现迷宫最短路径算法

    单源最短路(Bellman - Ford算法) 宽度优先搜索 迷宫最短路径用宽度优先搜索(bfs)相比用深度优先搜索(dfs)的好处在于bfs每次计算都是最短路径不存在重复计算,而dfs每计算出一条可 ...

  7. java迷宫实训报告_Java综合实训报告-迷宫.doc

    Java综合实训报告-迷宫 目 录 1.需求分析2 2.概要设计2 2.1功能图3 2.2系统流程图4 3.详细设计4 3.1类关系图5 3.2类设计图5 类Maze5 类MazeGrid6 3.3主 ...

  8. java迷宫类编程题_第十届蓝桥杯省赛java类B组 试题 E:迷宫 (动态规划之回溯法)...

    问题描述 试题 E: 迷宫 [问题描述] 下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可 以通行的地方. 010000 000100 001001 110000 迷宫的入口为 ...

  9. java 迷宫代码_老鼠走迷宫代码 JAVA

    展开全部 //老鼠走迷宫程序 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Maze1 ...

最新文章

  1. PHP扩展开发入门3------带参数的函数
  2. HDU - 2457 DNA repair(AC自动机+dp)
  3. 2021-10-28 SAP Spartacus SSR 性能方面的一些学习笔记
  4. drawable文件怎么添加图片_怎么给PDF文件添加书签
  5. 第一章:React入门
  6. 背景差分法android代码,【学术论文】基于背景差分法的尾气烟度检测系统设计...
  7. mysql merge事务_mysql菜鸟手迹11--mysql存储引擎之Merge
  8. java如何代码找错误_如何编写可怕的Java代码?
  9. MacOS安装svn客户端
  10. WDS+MDT部署系统
  11. Linux没有可用软件包 p7zip、 p7zip-plugins
  12. mac电脑投屏到小米盒子_电脑投屏到小米盒子
  13. cad等比例缩放快捷键_CAD比例缩放怎么用,快捷键命令SCALE
  14. 王健林:万达体育和传奇影业都要开展资本运作 今年要出成绩
  15. 1124 Raffle for Weibo Followers
  16. ubuntu下.chm文档查看工具
  17. 安卓-橡皮擦擦线完整实现
  18. 关于不同坐标地之前的转化(地球坐标系,经纬度坐标系,火星坐标系,EPSG:4326,WGS84,EPSG:3857)
  19. jodd忽略ssl证书_2.使用jodd 操作mysql数据库
  20. 2022年全国职业院校技能大赛(中职组)网络安全竞赛试题(10)(总分100分)

热门文章

  1. [js高手之路]构造函数的基本特性与优缺点
  2. [BZOJ3545][ONTAK2010]Peaks
  3. HttpClient v4.5 简单抓取主页数据
  4. surfaceView中的线程问题
  5. ASP.NET MVC从视图传递多个模型到Controller
  6. springxml解析
  7. [Java核心技术(卷I)] - Java中的参数能做什么和不能做什么
  8. python --- opencv部分学习
  9. linux --- 进阶指令
  10. DOM-7 【兼容】事件处理函数、冒泡捕获、阻止冒泡默认事件