zoukankan      html  css  js  c++  java
  • 深度优先搜索

    深度优先搜索

    【题目】类似一张宫格图,即迷宫,小明在迷宫中迷路了,好朋友苏格去寻找他,请你找出一条最短路径的步数。其中有障碍物,不能走。

    输入要求:第一行输入两个整数n,m分别代表迷宫为n行m列,接下来n行分别输入m个数值,最后一行输入起点起点坐标(小华的坐标)和终点坐标(小明的坐标),输入0代表可以走,输入1代表障碍物;

    输出要求:只输出最短步数

    输入样例:

    5 4
    0 0 1 0
    0 0 0 0
    0 0 1 0
    0 1 0 0
    0 0 0 1
    1 1 4 3

    输出样例:

    7

    代码如下:

    import java.util.Scanner;
    
    public class J解救小哈深搜代码 {
    	static int n,m,sx,sy,zx,zy;
    	static final int size=55;
    	static int min=99999999;
    	static int dir[][]= {{0,1},{1,0},{0,-1},{-1,0}};
    	static int map[][]=new int [size][size];//存放
    	static int vis[][]=new int [size][size];//标记是否走过
    	static Scanner in=new Scanner (System.in);
    	public static boolean inmap(int x,int y)
    	{//判断是否越界
    		return(x>=1&&x<=n&&y>=1&&y<=m);
    	}
    	public static void dfs(int x,int y,int ans)
    	{
    		if(x==zx&&y==zy)
    		{
    			if(ans<min)
    			{
    				min=ans;//变更最小步数
    			}
    			return;
    		}
    		
    		
    		
    		for(int i=0;i<4;i++)
    		{//判断下一个点
    			int nx=x+dir[i][0];
    			int ny=y+dir[i][1];
    			if(inmap(nx,ny)&&vis[nx][ny]==0&&map[nx][ny]==0)
    			{
    				vis[nx][ny]=1;
    				dfs(nx,ny,ans+1);
    				vis[nx][ny]=0;
    				
    			}
    		}
    		return ;
    	}
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		n=in.nextInt();m=in.nextInt();
    		for(int i=1;i<=n;i++)
    		{
    			for(int j=1;j<=m;j++)
    			{
    				map[i][j]=in.nextInt();//1代表障碍物,0代表空地可走
    			}
    		}
    		sx=in.nextInt();sy=in.nextInt();//起点
    		zx=in.nextInt();zy=in.nextInt();//目标点
    		vis[sx][sy]=1;//起点已经走过
    		dfs(sx,sy,0);//开始
    		
    		System.out.print(min);
    		return;
    	}
    
    }
    

    作者:Better又
    出处:https://www.cnblogs.com/lwyy1223-/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    luogu P3295 [SCOI2016]萌萌哒
    luogu P4916 魔力环
    CF997C Sky Full of Stars
    CF961G Partitions
    android屏蔽软键盘并且显示光标
    设置和获取Android中各种音量
    自定义广播
    发送广播
    android取高度
    Java数字格式化
  • 原文地址:https://www.cnblogs.com/lwyy1223-/p/12599011.html
Copyright © 2011-2022 走看看