大佬能帮忙看看代码有什么问题吗? 有一个 R 行 C 列的迷宫,共含 R×C 个格子,每个格子中为 字符 . 或 字符 # ,分别表示 通道、墙。迷宫入口为第 1 行第 1 列的格子,出口为第 R 行第 C 列的格子。
求:从入口走到出口,至少需走多少个格子(包括入口格子、出口格子)?若无法走到出口,则输出 −1 。
注:每一步只能走到相邻4个方向(上、下、左、右)的格子上。
输入描述
第一行,包含两个整数 R 和 C
接下来 R 行,每行包含 C 个字符( 这些字符只可能是 . 或 # )
【测试数据范围】1≤R,C≤5
输出描述
输出一行,包含一个整数,代表至少需要走多少个格子。若无法走到出口,则输出 −1
#include<iostream>
using namespace std;
struct migong
{
int bs=999;
int zuxianx,zuxiany;
}q[10][10];
char s[6][6];
void bfs(int x,int y)
{
if (s[x-1][y]!='#')
{
if (q[x-1][y].bs-1>q[x][y].bs)
{
q[x-1][y].bs=q[x][y].bs+1;
q[x-1][y].zuxianx=x;
q[x-1][y].zuxiany=y;
}
}
else if (s[x+1][y]!='#')
{
if (q[x+1][y].bs-1>q[x][y].bs)
{
q[x+1][y].bs=q[x][y].bs+1;
q[x+1][y].zuxianx=x;
q[x+1][y].zuxiany=y;
}
}
else if (s[x][y-1]!='#')
{
if (q[x][y-1].bs-1>q[x][y].bs)
{
q[x][y-1].bs=q[x][y].bs+1;
q[x][y-1].zuxianx=x;
q[x][y-1].zuxiany=y;
}
}
else if (s[x][y+1]!='#')
{
if (q[x][y+1].bs-1>q[x][y].bs)
{
q[x][y+1].bs=q[x][y].bs+1;
q[x][y+1].zuxianx=x;
q[x][y+1].zuxiany=y;
}
}
}
int main()
{
q[1][1].bs=1;
q[1][1].zuxianx=0;
q[1][1].zuxiany=0;
int n,m,x,y;
cin>>n>>m;
for (int i=1;i<=n;i++)
{
for (int j=1;j<=m;j++)
{
cin>>s[i][j];
}
}
bfs(1,1);
if (q[x][y].bs==999) cout<<-1;
else cout<<q[x][y].bs;
return 0;
}