全RE呀!!!
查看原帖
全RE呀!!!
1343308
IAKIOI66666楼主2024/8/21 10:51

不知道为啥,全RE,麻烦各路大佬帮忙看一下为什么。

ans记录目前到达目的地时最少的跳跃次数,num记录目前跳了几次

#include<iostream>
#include<queue> 
using namespace std;
struct node{
	int x,y;
	int num;
}; 
queue<node> q;
int n,m,x1,y1,x2,y2,c,d,ans=1e9,a[100][100];
int main()
{
	cin>>n>>m>>c>>d;
	int x[8]={c,c,-1*c,-1*c,d,d,-1*d,-1*d};
	int y[8]={-1*d,d,-1*d,d,c,-1*c,c,-1*c};
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cin>>a[i][j];
			if(a[i][j]==3)x1=i,y1=j;
			if(a[i][j]==4)x2=i,y2=j;
		}
	}
	q.push({x1,y1,0});
	while(!q.empty())
	{
		node qq=q.front();
		q.pop();a[qq.x][qq.y]=2;
		if(qq.x==x2&&qq.y==y2)
		{
			ans=min(ans,qq.num);continue;
		}
		else if(qq.num>=ans)
		{
			continue; 
		}
		for(int i=0;i<=8;i++)
		{
			int xx=x[i]+qq.x,yy=y[i]+qq.y;
			if(xx<1||yy<1||yy>m||xx>n||a[xx][yy]==0||a[xx][yy]==2)continue;
			q.push({xx,yy,qq.num+1});
		}
	}
	cout<<ans<<endl; 
    return 0;
}
2024/8/21 10:51
加载中...