java实现迷宫走法
** 迷宫走法**
迷宫问题
对于走迷宫,人们提出过很多计算机上的解法。深度优先搜索、广度优先搜索是使用最广的方法。生活中,人们更愿意使用“紧贴墙壁,靠右行走”的简单规则。
下面的代码则采用了另一种不同的解法。它把走迷宫的过程比做“染色过程”。假设入口点被染为红色,它的颜色会“传染”给与它相邻的可走的单元。这个过程不断进行下去,如果最终出口点被染色,则迷宫有解。
仔细分析代码中的逻辑,填充缺少的部分。
把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。
public class Maze
{class Cell{private int row;private int col;private Cell from;public Cell(int row, int col, Cell from){this.row = row;this.col = col;this.from = from;}}char[][] maze = {{'#','#','#','#','B','#','#','#','#','#','#','#'},{'#','#','#','#','.','.','.','.','#','#','#','#'},{'#','#','#','#','.','#','#','#','#','.','.','#'},{'#','.','.','.','.','#','#','#','#','#','.','#'},{'#','.','#','#','#','#','#','.','#','#','.','#'},{'#','.','#','#','#','#','#','.','#','#','.','#'},{'#','.','#','#','.','.','.','.','.','.','.','#'},{'#','.','#','#','.','#','#','#','.','#','.','#'},{'#','.','.','.','.','#','#','#','.','#','.','#'},{'#','#','.','#','.','#','#','#','.','#','.','A'},{'#','#','.','#','#','#','.','.','.','#','#','#'},{'#','#','#','#','#','#','#','#','#','#','#','#'}};public void show(){for(int i=0; i<maze.length; i++){for(int j=0; j<maze[i].length; j++)
System.out.print(" " + maze[i][j]);System.out.println();}}//把与from集合中相邻的可染色节点染色,被染色节点记入 dest//一旦发现出口将被染色,则返回当前的“传播源”节点public Cell colorCell(Set<Cell> from, Set<Cell> dest){Iterator<Cell> it = from.iterator();while(it.hasNext()){Cell a = it.next();Cell[] c = new Cell[4];c[0] = new Cell(a.row-1, a.col, a);c[1] = new Cell(a.row, a.col-1, a);c[2] = new Cell(a.row+1, a.col, a);c[3] = ___________________________;for(int i=0; i<4; i++){if(c[i].row < 0 || c[i].row >= maze.length) continue;if(c[i].col < 0 || c[i].col >= maze[0].length) continue;char x = maze[c[i].row][c[i].col];if(x=='B') return a;if(x=='.') {maze[c[i].row][c[i].col] = '?';____________________;}}}return null;}public void resolve(){Set<Cell> set = new HashSet<Cell>();set.add(new Cell(9,11,null));for(;;){Set<Cell> set1 = new HashSet<Cell>();Cell a = colorCell(set, set1);if(a!=null){System.out.println("找到解!");while(a!=null){maze[a.row][a.col] = '+';______________;}break;}if(set1.isEmpty()){System.out.println("无解!");break;}set = set1;} }public static void main(String[] args){Maze m = new Maze();m.show();m.resolve();m.show(); }
}new Cell(a.row, a.col+1, a)
dest.add(c[i])
a = a.from
java实现迷宫走法相关推荐
- Java自动计算迷宫正确路线算法源码
简介: Java自动计算迷宫正确路线算法源码,首先迷宫需要满足存在开始标识和结束标识与墙标识,然后设置好行数与列数就可以开始计算正确路线了,采用的是为二维数组然后走遍所有路线的方式. 网盘下载地址: ...
- java生成迷宫_Java实现可视化迷宫
需求 使用深度优先算法求解迷宫路径,使用Java实现求解过程的可视化,可单步运行,形象直观. 演示效果 红色格子为迷宫终点,迷宫可放大缩小,为了录屏选择了较小的尺寸,有多种不同难度的迷宫可以加载. 简 ...
- java深度优先迷宫生成_通过深度优先搜索产生的迷宫的Java代码
下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. import java.io.FileOutputStream; import java. ...
- Java 地下迷宫·算法·(ACM/蓝桥杯)·递归解法
题目:小青蛙有一天不小心落入了一个地下迷宫,小青蛙希望用自己仅剩的体力值P跳出这个地下迷宫.为了让问题简单,假设这是一个n*m的格子迷宫,迷宫每个位置为0或者1,0代表这个位置有障碍物,小青蛙达到不了 ...
- java 迷宫最短路径_用Java实现迷宫最短路径算法
单源最短路(Bellman - Ford算法) 宽度优先搜索 迷宫最短路径用宽度优先搜索(bfs)相比用深度优先搜索(dfs)的好处在于bfs每次计算都是最短路径不存在重复计算,而dfs每计算出一条可 ...
- java bfs 迷宫例子_51-迷宫(一)- java版dfs和bfs
一天蒜头君掉进了一个迷宫里面,蒜头君想逃出去,可怜的蒜头君连迷宫是否有能逃出去的路都不知道. 看在蒜头君这么可怜的份上,就请聪明的你告诉蒜头君是否有可以逃出去的路. 输入格式 第一行输入两个整数 nn ...
- java生成迷宫_java怎么生成迷宫地图
package cn.zhongZw.model; import java.util.ArrayList; import java.util.Random; public class MazeMode ...
- java实现迷宫问题
迷宫问题 对于走迷宫,人们提出过很多计算机上的解法.深度优先搜索.广度优先搜索是使用最广的方法.生活中,人们更 愿意使用"紧贴墙壁,靠右行走"的简单规则. 58 下面的代码则采用了 ...
- 项目三 Java开发迷宫游戏
一.项目预习: 思考过程: 迷宫由一个一个格子组成,要求从入口到出口只有一条路径. 通过树实现是比较容易的,从根节点到每一个子节点都只有一条路径.假设入口是根节点,出口是树中某个子节点,那么,从根节点 ...
最新文章
- Android library module生成aar文件
- 【编程好习惯】青睐小粒度锁
- 在QT中结构体快速从二进制文件中读取数据
- c语言里变量列表,嵌入式C语言里的土豪们之变量类型
- 【数据分析】数据缺失影响模型效果?是时候需要missingno工具包来帮你了!
- dos中特殊符号命令的应用
- jarsigner签名过程
- .net remoting 与webservice
- codeforce 884C - Bertown Subway DFS+图论
- php 5.6连接sqlserver,wamp php5.6连接sqlserver
- k8s管理java项目_Kubernetes集群部署项目-部署Java项目(推送镜像
- 怎样运用Oracle的BFILE
- anaconda显示ImportError: cannot import name ‘secure_write‘
- 上架服务器必须做的准备工作
- 什么是DBA[WHAT'S MEANING OF DBA]
- 使用jsp:include嵌入页面的两种方式
- 华为为何还没鸿蒙,华为鸿蒙2.0正式发布,但无第三方公开支持,华为的路该怎么走?...
- 0~9的ASCII码
- windows - 更改用户账户名称(windows10)
- Mac如何添加打印机
热门文章
- java.lang.NoClassDefFoundError: com/huaban/analysis/jieba/JiebaSegmenter
- Python怼人代码,让编程变得更有趣
- 《PPT思维》第一课:PPT基础思维
- 微信小程序云开发数据库操作
- 怎么用python编简单游戏大全_适合新手练手的三个python简单小游戏
- 美国的非农数据一般会在几点发布
- 关于固态硬盘SSD的4K对齐
- 计算机网络学习笔记 3.6 局域网
- 有限差分——图像求偏导
- vivado xilinx IOB = true的使用