189 8069 5689

迷宫路径(纵情探索版)JAVA-创新互联

已知一个N*N的迷宫,允许上,左,下,右,左上,左下,右上,右下,八个方位任意探索,且迷宫中有障碍物(用1表示障碍物不能通过,0表示没有障碍物能通过),请找出迷宫中任意两点V1,V2之间的路径。

成都创新互联公司专注于企业全网营销推广、网站重做改版、沙河网站定制设计、自适应品牌网站建设、H5网站设计商城建设、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为沙河等各大城市提供网站开发制作服务。

输入格式:

第一行是一个正整数N代表迷宫大小。

第二行是两个非负整数,中间以空格分开代表起始点V1的坐标。

第三行是两个非负整数,中间以空格分开代表终点V2的坐标。

接下来的N列N行由1和0构成的数组代表迷宫的地图。

输出格式:

输出可行路径的坐标,坐标之间用"->"链接,不同路径之间用换行隔开。

若没有路径请输出“没有路径”。

输入样例1:

3
0 0
2 2
0 1 1
1 1 0
1 1 0

输出样例1:

没有路径

输入样例2:

3
0 0
2 2
0 0 1
1 1 0
1 1 0

输出样例2:

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

输出样例3:

7
0 0
6 6
0 1 1 1 1 1 1
1 0 1 1 0 1 1
0 1 1 1 0 1 1
0 1 0 1 0 1 1 
1 0 1 0 1 1 1
1 1 1 1 0 1 1 
0 0 1 1 0 0 0

输出样例3:

(0,0)->(1,1)->(2,0)->(3,0)->(4,1)->(3,2)->(4,3)->(5,4)->(6,4)->(6,5)->(6,6)
(0,0)->(1,1)->(2,0)->(3,0)->(4,1)->(3,2)->(4,3)->(5,4)->(6,5)->(6,6)

解题思路:深度优先遍历和回溯,是上次发布的解决迷宫路径问题的升级版,但核心依旧不变。

解决迷宫路径问题:http://t.csdn.cn/nqcs8

本题代码如下:

import java.util.*;
public class Main{
public static void main(String[] args){
   Scanner sc=new Scanner(System.in);
   int n=sc.nextInt();
   int xy=0;
   Maze s=new Maze(n);
   int x=sc.nextInt();
   int y=sc.nextInt();
   int xx=sc.nextInt();
   int yy=sc.nextInt();
   s.over(xx, yy);
   for(int i=0;i=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]+")");
   flag++;
 }
 public void print1()
 {   if(flag==0)
	 System.out.print("没有路径");
 }
}

(创作这道题的原因,是因为朋友问我能否走出他设的迷宫,刚好又是刚学会迷宫路径,但我又不想局限于就四个方向探索, 所以就创作了这个八个方向纵情探索任意两点路径的升级版。)

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


文章题目:迷宫路径(纵情探索版)JAVA-创新互联
网页网址:http://jkwzsj.com/article/dosghs.html

其他资讯