(数据结构)迷宫问题
迷宫有一个入口,一个出口。一个人从入口走进迷宫,目标是找到出口。阴影部分和迷宫的外框为墙,每一步走一格,每格有四个可走的方向,探索顺序为地图方向:南(下)、东(右)、北(上)、西(左)。
输入:输入迷宫数组。第一行数据表示一个 n*n (n<=100)的迷宫;第二行开始的n行为迷宫数据。
其中:0表示路,1表示墙,起点在左上角 <1,1> 的位置,终点在右下角 <n,n> 的位置。
输出:若有解,输出从入口到出口的一条路径,否则输出 there is no solution!
例(上图所示的迷宫数组)
输入:
4 4
0 0 1 0
0 1 0 1
0 0 0 0
0 1 0 0
输出:<1,1> <2,1> < 3,1> < 3,2> < 3,3> <4,3> <4,4>
测试用例1:
测试输入:
4 4↵
0 0 1 0↵
0 1 0 1↵
0 0 0 0↵
0 1 0 0↵
期待的输出:
<1,1> <2,1> < 3,1> < 3,2> < 3,3> <4,3> <4,4> ↵
测试用例2:
测试输入:
4 4↵
0 0 1 0↵
1 0 1 1↵
0 0 0 1↵
0 1 0 1↵
期待的输出:
There is no solution!↵
测试用例3:
测试输入:
8 8↵
0 0 0 0 0 1 0 0↵
1 0 1 1 0 0 0 0↵
0 0 0 1 1 1 0 1↵
0 1 1 1 0 0 0 0↵
0 0 0 0 1 0 1 1↵
1 1 0 0 0 0 0 0↵
0 1 1 1 0 1 0 0↵
0 0 0 0 0 0 0 0↵
期待的输出:
<1,1> <1,2> <2,2> < 3,2> < 3,1> <4,1> <5,1> <5,2> <5,3> <6,3> <6,4> <6,5> <7,5> <8,5> <8,6> <8,7> <8,8> ↵
测试用例4:
测试输入:
8 8↵
0 0 1 0 0 0 1 0↵
0 0 1 0 0 0 1 0↵
0 0 0 0 1 1 0 0↵
0 1 1 0 0 0 0 0↵
0 0 1 1 0 0 0 0↵
0 1 0 0 0 1 0 0↵
0 1 1 1 0 1 1 0↵
1 0 0 0 0 0 0 0↵
期待的输出:
<1,1> <2,1> < 3,1> < 3,2> < 3,3> < 3,4> <4,4> <4,5> <5,5> <6,5> <7,5> <8,5> <8,6> <8,7> <8,8>↵
代码如下:
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
using std::cin;
using std::cout;
using std::endl;
struct node
{
int x