# include <stdio.h>
#include <cstring>
char a[5][5];
int b[5][5];
int x = 0, y = 0;
int flag = 0, step = 0 ,num = 0;
int min(int num, int step)
{
return num > step ? step : num;
}
void dfs(int x, int y, int step)
{
if (a[x][y] == 'E')
{
if (num == 0)
num = step;
else
num = min(num,step);
return ;
}
else
{
for (int i = 0; i < 4 ; ++i)
{
if (i == 0)
{
if (a[x][y + 1] != '#' && y + 1 < 5 && b[x][y + 1] != 1)
{
b[x][y] = 1;
dfs(x, y + 1,step + 1);
b[x][y] = 0;
}
}
if (i == 1)
{
if (a[x + 1][y] != '#' && x+ 1 < 5 && b[x + 1][y] != 1)
{
b[x][y] = 1;
dfs(x + 1, y,step + 1);
b[x][y] = 0;
}
}
if (i == 2)
{
if (a[x][y - 1] != '#' && y - 1 >= 0 && b[x][y - 1] != 1)
{
b[x][y] = 1;
dfs(x, y - 1,step + 1);
b[x][y] = 0;
}
}
if(i==3)
if (a[x - 1][y] != '#' && x - 1 >= 0 && b[x - 1][y] != 1)
{
b[x][y] = 1;
dfs(x - 1, y,step + 1);
b[x][y] = 0;
}
}
}
}
int main()
{
for (int i = 0; i < 5; i++)
{
gets(a[i]);
for (int j = 0;j < 5; ++j)
{
b[i][j] = 0;
}
}
dfs(x,y,step);
printf("%d\n",num);
return 0;
}
迷宫最短
最新推荐文章于 2022-09-02 22:37:11 发布