57.深度优先搜索 广搜练习:迷宫(未结题)
时间限制: 1 s
题目描述
小刚在迷宫内,他需要从A点出发,按顺序经过B,C,D……,到达最后一个点,再回到A点。迷宫内有些障碍,问至少走几步。
输入描述
第一行有三个数n,m表示迷宫有n行,m列。
第2行到第n+1行,每行m个字符,可能是’A’..’Z’,’2’,’0’ 其中,2表示障碍,0表示可以走。’A’..’Z’也可以走。
输出描述
至少走几步可以按规定走完,如果不行,输出“Impossible”
样例输入
5 5
A002B
022C0
000D0
00222
0000E
样例输出
26
数据范围及提示
0%的数据满足:1<=n<=10 1<=m<=10 字母为“A”..“B”。
30%的数据满足:1<=n<=10 1<=m<=10 字母为“A”..“G”。
50%的数据满足:1<=n<=10 1<=m<=10 字母为“A”..“Z”。
10%的数据满足:1<=n<=100 1<=m<=100 字母为“A”..“B”。
30%的数据满足:1<=n<=100 1<=m<=100 字母为“A”..“G”。
100%的数据满足:1<=n<=100 1<=m<=100 字母为“A”..“Z”。
代码:
深搜做法:(程序复杂,递归很多,大数据超时)
#include
using namespace std;
#include
#include
const int maxn=101;
#define INF 9999999
int p[maxn][maxn],n,m,step[28]={0},maxnint;
struct ZM{
};
ZM zm[27];
int xx[]={0,0,1,-1};
int yy[]={1,-1,0,0};
char maxchar='A';
void input();
void DFS(int,int,int,int);
int main()
{
}
void DFS(int x1,int y1,int i,int ans)
{
}
void input()
{
}
广搜做法:
再建一个矩阵,存储由上一个字符到这个点的时间,因此入队进行筛查就行了