用深搜能不能过,一个点T
  • 板块灌水区
  • 楼主AC_bee
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/8/3 20:25
  • 上次更新2024/8/3 21:41:13
查看原帖
用深搜能不能过,一个点T
583593
AC_bee楼主2024/8/3 20:25
#include<bits/stdc++.h>
using namespace std;
int n,m,x,y;
int o[1001][1001];
int rl[8][2]={{-1,2},{-1,-2},{1,2},{1,-2},{2,-1},{2,1},{-2,1},{-2,-1}};
bool r[1001][1001];
void dfs(int a,int b)
{
	r[a][b]=true;
	for(int i=0,fx,fy;i<8;i++)
	{
		fx=a+rl[i][0];
		fy=b+rl[i][1];
		if(fx<=0 || fy<=0 || fx>n || fy>m) continue;
		if(r[fx][fy]==false || o[a][b]+1<o[fx][fy])
		{
			o[fx][fy]=o[a][b]+1;
			dfs(fx,fy);	
		}
	}
}
int main(){
	cin>>n>>m>>x>>y;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			o[i][j]=-1;
		}
	}
	o[x][y]=0;
	dfs(x,y);
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cout<<o[i][j]<<"   ";
		}
		cout<<endl;
	}
	return 0;
}

2024/8/3 20:25
加载中...