首页 > 代码库 > 深度优先搜索(迷宫救人最短路径)
深度优先搜索(迷宫救人最短路径)
1 import java.util.Scanner; 2 3 public class One { 4 //n,m为迷宫的行列范围,p,q是某人迷路所在地点,min用于记录走到终点最小路径的步数 5 public static int n,m,p,q,min=9999; 6 //数组a是迷宫,1代表有障碍物,数组d用于移动方向(右、下、左、上),数组book用于标记当前位置是否在路径中 7 public static int a[][]=new int[51][51],book[][]=new int[51][51],d[][]={{0,1},{1,0},{0,-1},{-1,0}}; 8 //用于寻找最短路径的方法 9 public static void f(int x,int y,int step){ 10 if(x==p&&y==q){ 11 if(step<min){ 12 min=step; 13 return; 14 } 15 } 16 for(int k=0;k<=3;k++){ 17 int tx=x+d[k][0]; 18 int ty=y+d[k][1]; 19 if(tx<1||ty<1||tx>n||ty>m||a[tx][ty]==1||book[tx][ty]==1)continue; 20 book[tx][ty]=1; 21 f(tx,ty,step+1); 22 book[tx][ty]=0; 23 } 24 return; 25 } 26 public static void main(String args[]){ 27 Scanner scanner=new Scanner(System.in); 28 System.out.println("输入迷宫的行列数n、m:"); 29 n=scanner.nextInt(); 30 m=scanner.nextInt(); 31 System.out.println("输入迷宫地图:"); 32 for(int i=1;i<=n;i++){ 33 for(int j=1;j<=m;j++){ 34 a[i][j]=scanner.nextInt(); 35 } 36 System.out.println(""); 37 } 38 System.out.println("输入终点:"); 39 p=scanner.nextInt(); 40 q=scanner.nextInt(); 41 f(1,1,0); 42 System.out.println("最短步数是:"+min); 43 44 } 45 }
深度优先搜索(迷宫救人最短路径)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。