迷宫问题:利用BFS打印出从起点到终点的路径(java版)
来源:互联网 发布:推送重贴标签算法 编辑:程序博客网 时间:2024/05/02 02:45
题目:输入一个n行m列的矩阵,每个单元格要么是空地用1表示,要么是障碍物用0表示;
写出从起点0,0到终点2,2的最短路径移动序列,其中UDLR分别表示往上、下、左、右移动。
代码:
package diliuzhang;import java.util.Scanner;import javax.naming.directory.DirContext;public class ZouMiGongBFS {static int m;static int n;static int[] q=new int[4000];static int[][] vis=new int[20][20];static int[][] last_dir=new int[20][20];static int[][] fa=new int[20][20];static int[][] dist=new int[20][20];static int[] dx={1,0,-1,0};static int[] dy={0,1,0,-1};static int[] dir=new int[4000];static char[] name={'D','R','U','L'};static int[][] maze=null;public static void main(String[] agrs){Scanner inScanner=new Scanner(System.in);n=inScanner.nextInt();m=inScanner.nextInt();maze=new int[n][m];for (int i = 0; i <n; i++) {for (int j = 0; j <m; j++) {maze[i][j]=inScanner.nextInt();}}bfs(0, 0);print_bath(2,2);}public static void print_bath(int x, int y) {// TODO Auto-generated method stubint c=0;for (; ; ) {int fx=fa[x][y]/m;int fy=fa[x][y]%m;if (fx==x&&fy==y) {break;}dir[c++]=last_dir[x][y];x=fx;y=fy;}while(c-->0){System.out.println(name[dir[c]]);}}public static void bfs(int x, int y) {// TODO Auto-generated method stubint front=0,rear=0,d,u;u=x*m+y;vis[x][y]=1;fa[x][y]=u;dist[x][y]=0;q[rear++]=u;while(front<rear){u=q[front++];x=u/m;y=u%m;for ( d = 0; d < 4; d++) {int nx=x+dx[d];int ny=y+dy[d];if (nx>=0&&nx<n&&ny>=0&&ny<m&&maze[nx][ny]!=0&&vis[nx][ny]==0) { int v=nx*m+ny; q[rear++]=v; vis[nx][ny]=1; fa[nx][ny]=u; dist[nx][ny]=dist[x][y]+1; last_dir[nx][ny]=d;}}}}}
0 0
- 迷宫问题:利用BFS打印出从起点到终点的路径(java版)
- 迷宫的最短路径(BFS,起点到终点)
- 迷宫问题2-在给定的迷宫中计算从起点到终点的路径数目
- 迷宫问题1-在给定的迷宫中判断是否存在一条路径从起点到终点
- Unique Paths 寻找从起点到终点的路径个数
- Java 有向图的遍历,寻找所有从起点到终点的路径
- bfs 较为全面的迷宫路径问题,包括路径的打印,起点到任一点的最小步数.
- 迷宫问题bfs+打印路径
- bfs迷宫问题--打印路径
- bfs模板(从任意起点走到终点所需步数)
- 开源,从起点到终点
- leetcode之网格从起点到终点的路径数之滚动数组
- 用Java实现Dijkstra输出指定起点到终点的最短路径
- 0001-人生就是一场从起点到终点的历程
- Key Vertex (hdu 3313 SPFA+DFS 求起点到终点路径上的割点)
- POJ 3984 迷宫问题(bfs+打印路径)
- poj 3984迷宫问题(bfs加打印路径)
- POJ-3984-迷宫问题(BFS打印路径)
- 游戏开发中的数学和物理算法(16):矩阵的乘法
- 修改Eclipse中项目在Apache Tomcat中的部署路径
- sql分页
- C语言学习笔记
- I2C驱动情景分析——怎样增加I2C设备
- 迷宫问题:利用BFS打印出从起点到终点的路径(java版)
- 最快速的Android开发环境搭建ADT-Bundle及Hello World
- linux服务器lamp环境配置遇到的问题
- SQL Server2005中的公用表表达式(CTE)的递归调用
- Java虚拟机---运行时数据区域
- 游戏开发中的数学和物理算法(17):平移
- Codeforces 245H Queries for Number of Palindromes
- 数据结构 树(树与等价问题)
- mac svn checkout 出错