C++70分,求调
查看原帖
C++70分,求调
892470
DL_Lingkong楼主2023/7/18 16:25
#include <iostream>
using namespace std;
int a[19198][19198] = {},n,m,x,y,xx[9] = {0,1,1,-1,-1,2,2,-2,-2},yy[9] = {0,2,-2,2,-2,1,-1,1,-1};
bool vis[19198][19198] = {};
void bfs(int x,int y,int st)
{
//	cout << x << ',' << y << ':' << st << endl;
	if(vis[x][y])
	{
		if(a[x][y] > st)
		{
			a[x][y] = st;
		}
		else
		{
			return ;
		}
	}
	a[x][y] = st;
	vis[x][y] = true;
	for(int i = 1;i <= 8;i++)
	{
		if(x + xx[i] > 0 && x + xx[i] <= n && y + yy[i] > 0 && y + yy[i] <= m)
		{
//			cout << x + xx[i] << ',' << y + yy[i] << endl;
			bfs(x + xx[i],y + yy[i],st + 1); 
		}
	}
	return ;
}
int main()
{
	cin >> n >> m >> x >> y;
	bfs(x,y,0);
	for(int i = 1;i <= n;i++)
	{
		for(int j = 1;j <= m;j++)
		{
			if(i != x && j != y && a[i][j] == 0)
			{
				a[i][j] = -1; 
			}
		}
	}
	for(int i = 1;i <= n;i++)
	{
		for(int j = 1;j <= m;j++)
		{
			cout << a[i][j] << ' ';
		}
		cout << endl;
	}
	return 0;
}

2023/7/18 16:25
加载中...