解决迷宫路径问题(深度优先)JAVA-创新互联-成都快上网建站

解决迷宫路径问题(深度优先)JAVA-创新互联

已知一个N*N的迷宫,允许上,左,下,右四个方向行走,且迷宫中没有任何障碍,所有点都可以走。现在请你按照上,左,下,右顺序进行搜索,找出从(0,0)点到(N-1,N-1)点的所有路径。

创新互联长期为上千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为滨海企业提供专业的网站制作、成都网站设计,滨海网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。

输入格式:输入一个整数N(0

输出格式:按上,左,下,右搜索顺序探索迷宫,输出从点(0,0)走到右下角(N-1,N-1)点的所有可能的路径。

样例输入:

3

样例输出:

(0,0)->(0,1)->(0,2)->(1,2)->(1,1)->(1,0)->(2,0)->(2,1)->(2,2)
(0,0)->(0,1)->(0,2)->(1,2)->(1,1)->(2,1)->(2,2)
(0,0)->(0,1)->(0,2)->(1,2)->(2,2)
(0,0)->(0,1)->(1,1)->(1,0)->(2,0)->(2,1)->(2,2)
(0,0)->(0,1)->(1,1)->(1,2)->(2,2)
(0,0)->(0,1)->(1,1)->(2,1)->(2,2)
(0,0)->(1,0)->(1,1)->(0,1)->(0,2)->(1,2)->(2,2)
(0,0)->(1,0)->(1,1)->(1,2)->(2,2)
(0,0)->(1,0)->(1,1)->(2,1)->(2,2)
(0,0)->(1,0)->(2,0)->(2,1)->(1,1)->(0,1)->(0,2)->(1,2)->(2,2)
(0,0)->(1,0)->(2,0)->(2,1)->(1,1)->(1,2)->(2,2)
(0,0)->(1,0)->(2,0)->(2,1)->(2,2)

解题思路:对路径深度优先遍历,回溯。

import java.util.*;
public class Main{
public static void main(String[] args){
   Scanner sc=new Scanner(System.in);
   int n=sc.nextInt();
   Maze s=new Maze(n);
   s.b[0][0]=true;//标记此点已经走过
   s.dfs(0, 0, 0);
}
}
class Maze
{
 boolean b[][];//标记是否走过
 int c[][];//储存路径
 int fx[];
 int fy[];//遍历顺序
 int N;
 Maze(int n)
 {
 this.N=n-1;
 b=new boolean[n][n];
 c=new int [n*n][3];
 int xx[]= {0,-1,0,1};
 int yy[]= {-1,0,1,0};//上左下右
 fx=xx;
 fy=yy;
 }
 public void dfs(int x,int y,int k)
 {
	 c[k][1]=x;
	 c[k][2]=y;
	 //先存入此点
	 if(x==N&&y==N)
	 {
		 print(k);
	 }
	 int tx=0,ty=0;
	 for(int i=0;i<4;i++)
	 {
		tx=x+fx[i];
		ty=y+fy[i];//上左下右遍历
		if(tx>=0&&tx<=N&&ty>=0&&ty<=N&&b[tx][ty]!=true)
		{
			b[tx][ty]=true;//标记走过
			dfs(tx,ty,k+1);
			b[tx][ty]=false;//回溯到前一个状态
		}
	 }
 }
 public void print(int k)
 {
   for(int i=0;i");
   System.out.println("("+c[k][1]+","+c[k][2]+")");
 }
}

思路来源于B站视频博主(虽然是c++,但是思路非常清晰): https://www.bilibili.com/video/BV1kU4y1h77M?vd_source=d9567d37d14646768923e49ef06e890d 

(解决迷宫问题我之前一直觉得是那么触不可及,但当我真正静下来尝试去慢慢弄清楚它的时候又恰似“山重水复疑无路,柳暗花明又一村。”,很多时候并不是山太高大我就无法攀爬,而是我没有去找上山的路。) 

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章名称:解决迷宫路径问题(深度优先)JAVA-创新互联
网站链接:http://kswjz.com/article/dcdghj.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流