0Tps DFS
查看原帖
0Tps DFS
631713
Amano_Hina楼主2022/10/24 09:03

rt,应该是有个小问题,调不出来qwq

#include <bits/stdc++.h>
using namespace std;
unsigned long long int gcd(unsigned long long int a,unsigned long long int b)
{
	 return b ? gcd(b,a%b) : a;
}
unsigned long long int lcm(unsigned long long int a,unsigned long long int b)
{
 	 return a*b/gcd(a,b);
}
int n,m,x,y;
int a[405][405];
bool f[405][405];
void dfs(int nowx,int nowy,int now)
{
	if(nowx>n||nowx<=0||nowy>m||nowy<0||f[nowx][nowy]==1)
	{
		
	}else{
		a[nowx][nowy]=min(now,a[nowx][nowy]);
		if(a[nowx][nowy]==-1)
		{
			a[nowx][nowy]=now;
		}
		f[nowx][nowy]=1;
		dfs(nowx+1,nowy+2,now+1);
		dfs(nowx+1,nowy-2,now+1);
		dfs(nowx-1,nowy+2,now+1);
		dfs(nowx-1,nowy-2,now+1);
		dfs(nowx+2,nowy+1,now+1);
		dfs(nowx+2,nowy-1,now+1);
		dfs(nowx-2,nowy+1,now+1);
		dfs(nowx-2,nowy-1,now+1);
	}
}
int main()
{
 	std::ios::sync_with_stdio(0);
	cin.tie(0);
	cin>>n>>m>>x>>y;
	memset(a,-1,sizeof(a));
	f[x][y]=0;
	dfs(x,y,0);
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			cout<<a[i][j]<<" ";
		}
		cout<<endl;
	}
    return 0;
}

2022/10/24 09:03
加载中...