已知一个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元起,快前往官网查看详情吧