一样的代码分数不一样?
查看原帖
一样的代码分数不一样?
164700
金苹果gold楼主2020/8/24 15:22
#include<bits/stdc++.h>
using namespace std;
int n,m,dx[4]={0,1,0,-1},dy[4]={1,0,-1,0},q[1000010][3],front,rear,mx,my,ddx,ddy;
char a[20010][20010];
bool vis[20010][20010]={false};
void init()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
		{
			cin>>a[i][j];
			if(a[i][j]=='m')
				mx=i,my=j;
			if(a[i][j]=='d')
				ddx=i,ddy=j;
		}
	front=0,rear=1;
	q[rear][0]=mx,q[rear][1]=my,q[rear][2]=0;
	vis[mx][my]=true;
}
void bfs()
{
	bool find=false;
	while(front<rear)
	{
		front++;
		for(int i=0;i<4;i++)
		{
			int xx=q[front][0]+dx[i];
			int yy=q[front][1]+dy[i];
			if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&a[xx][yy]!='#'&&!vis[xx][yy])
			{
				rear++;
				q[rear][0]=xx;
				q[rear][1]=yy;
				q[rear][2]=q[front][2]+1;
				vis[xx][yy]=true;
				if(xx==ddx&&yy==ddy)
				{
					find=true; 
					return;
				}
			}
		}
	}
	if(!find)
	{
		q[rear][2]=-1;
		return;
	}
}
int main()
{
	init();
	bfs();
	if(q[rear][2]==-1)
		cout<<"No Way!";
	else
		cout<<q[rear][2];
	return 0;
}

两次提交,一次WA 1个点90分,一次RE 2个点80分,咋回事啊QAQ

2020/8/24 15:22
加载中...