求助大佬
查看原帖
求助大佬
582167
Avengers__lsw楼主2022/3/30 11:39

为什么条件是x<=nx呢?比如一个6*9的矩阵,明明马可以在地图的x方向上横着走直到9啊

#include<queue>
#include<map>
#include<string.h>
using namespace std;
typedef pair<int,int> PII;
int dz[401][401];
int dx[]={1,1,2,2,-1,-1,-2,-2},dy[]={2,-2,1,-1,2,-2,1,-1};
int main()
{
	int map[401][401];
	int n,m,x,y;
	cin>>n>>m>>x>>y;
	memset(map,-1,sizeof(map));
	map[x][y]=0;
    queue<PII>p;
	p.push({x,y});
	dz[x][y]=0;
	while(p.size())
	{
	    PII t=p.front();
	    //cout<<t.first<<' '<<t.second<<'A'<<endl;
	    p.pop();
	    for(int i=0;i<8;i++)
	    {
	    	int nx=t.first+dx[i],ny=t.second+dy[i];
	    //	cout<<nx<<' '<<ny<<endl;
	    	if(nx>0&&nx<=n&&ny>0&&ny<=m&&map[nx][ny]==-1)
	    	{
	    	//	cout<<nx<<' '<<ny<<endl;
	    		p.push({nx,ny});
	    		dz[nx][ny]=dz[t.first][t.second]+1;
	    		map[nx][ny]=dz[nx][ny];
			}
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			printf("%-5d",map[i][j]);
		}
		cout<<endl;
	 } 
	 return 0;
}
2022/3/30 11:39
加载中...