求调
  • 板块灌水区
  • 楼主_cyh0412_
  • 当前回复14
  • 已保存回复14
  • 发布时间2024/7/14 11:00
  • 上次更新2024/7/14 12:21:04
查看原帖
求调
731644
_cyh0412_楼主2024/7/14 11:00

rt,原题题面

我的代码:

#include<bits/stdc++.h>
using namespace std;

const int MAXN=25;
const int dx[]={1,0,-1,0};
const int dy[]={0,1,0,-1};

struct P
{
	int x,y;
}q[MAXN*MAXN];

int m,n,ax,ay,bx,by,f,r,dis[MAXN][MAXN];
bool g[MAXN][MAXN],st[MAXN][MAXN];

int bfs()
{
	q[r++]={ax,ay},st[ax][ay]=1,g[ax][ay]=1;
	while (f!=r)
	{
		P tmp=q[f++];
		if (tmp.x==bx&&tmp.y==by) return dis[tmp.x][tmp.y];
		for (int i=0;i<4;i++)
		{
			int x=tmp.x+dx[i],y=tmp.y+dy[i];
			if (x<1||x>m||y<1||y>n) continue;
			if (st[x][y]||!g[x][y]) continue;
			q[r++]={x,y};
			st[x][y]=1;
			dis[x][y]=dis[tmp.x][tmp.y]+1;
		}
	}
	return -1;
}

int main()
{
	//freopen("Input.txt","r",stdin);
	//freopen("Output.txt","w",stdout);
	while (1)
	{
		cin>>m>>n;
		if (m==0&&n==0) break;
		for (int i=1;i<=m;i++)
			for (int j=1;j<=n;j++)
			{
				char c;
				cin>>c;
				if (c=='.') g[i][j]=1;
				else if (c=='@') g[i][j]=1,ax=i,ay=j;
				else if (c=='*') g[i][j]=1,bx=i,by=j;
			}
		cout<<bfs()<<endl;
	}
	return 0;
}

错误输出结果

10 
-1
-1

可能是因为多组数据的输入,dis数组未能初始化导致答案错误,但是我不知道在哪里进行初始化

2024/7/14 11:00
加载中...