20分求助
  • 板块灌水区
  • 楼主wangqz
  • 当前回复4
  • 已保存回复4
  • 发布时间2022/8/8 10:00
  • 上次更新2023/10/27 16:30:49
查看原帖
20分求助
530676
wangqz楼主2022/8/8 10:00

题目P1443马的遍历

#include<iostream>
#define size 405
using namespace std;
int b=0,e=2;
int a[size][size],team[size*size][2];
int dx[8]={2,-2,2,-2,-1,1,-1,1},
    dy[8]={1,1,-1,-1,2,2,-2,-2};
int main()
{
	for(int i=0;i<size;i++) for(int j=0;j<size;j++) a[i][j]=-1;
	int n,m,x,y;	cin>>n>>m>>x>>y;
	team[1][0]=x,team[1][1]=y,a[x][y]=0;
	while(b++<e-1)
	{
		//b++; 
		for(int i=0;i<8;i++)
		{
			//e++;
			int xx=team[b][0]+dx[i],yy=team[b][1]+dy[i];
			if(xx>0&&xx<=n&&yy>0&&yy<=n&&a[xx][yy]==-1)		
			{
				team[e][0]=xx; team[e++][1]=yy;
				a[xx][yy]=a[team[b][0]][team[b][1]]+1;
			} 
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		    cout<<a[i][j]<<" ";
		cout<<endl;    
	}
	return 0;
}

测试点 4 5 1 1

2022/8/8 10:00
加载中...