麻烦帮忙看一下哪里错了
各位可以帮忙查个错吗?我自己没想出来,样例也过了,但出题者表示有错,结果是:Wrong Answer。
题目:
总时间限制:
1000ms
内存限制:
65536kB
描述
当你站在一个迷宫里的时候,往往会被错综复杂的道路弄得失去方向感,如果你能得到迷宫地图,事情就会变得非常简单。
假设你已经得到了一个n*m的迷宫的图纸,请你找出从起点到出口的最短路。
输入
第一行是两个整数n和m(1<=n,m<=100),表示迷宫的行数和列数。
接下来n行,每行一个长为m的字符串,表示整个迷宫的布局。字符'.'表示空地,'#'表示墙,'S'表示起点,'T'表示出口。
输出
输出从起点到出口最少需要走的步数。
样例输入
3 3
S#T
.#.
...
样例输出
6
自己做的答案:
#include<bits/stdc++.h>
using namespace std;
struct aa
{
int x,y,step;
}q[1650];
int main()
{
int i,j,r,c,dx[4]={-1,1,0,0},dy[4]={0,0,-1,1};
int head,tail,v[45][45]={0},tx,ty;
char a[45][45];
cin>>r>>c;
for(i=1;i<=r;i++)
{
for(j=1;j<=c;j++)
{
cin>>a[i][j];
if(a[i][j]=='S')
{
q[1].x=i;
q[1].y=j;
q[1].step=0;
v[i][j]=1;
}
}
}
head=0;tail=1;
while(head<tail)
{
head++;
for(i=0;i<4;i++)
{
tx=q[head].x+dx[i];ty=q[head].y+dy[i];
if(tx>=1&&ty>=1&&tx<=r&&ty<=c&&v[tx][ty]==0&&a[tx][ty]!='#')
{
tail++;
q[tail].x=tx;
q[tail].y=ty;
q[tail].step=q[head].step+1;
v[tx][ty]=1;
if(a[tx][ty]=='T')
{
cout<<q[tail].step;
return 0;
}
}
}
}
return 0;
}

浙公网安备 33010602011771号