H~e~l~p 求助大佬!dfs只过了1,5测试点 帮帮忙啊 救命
查看原帖
H~e~l~p 求助大佬!dfs只过了1,5测试点 帮帮忙啊 救命
415731
zheng61楼主2022/4/7 18:15
#include<bits/stdc++.h>
using namespace std;

long n,a[1010][1010],ans=0;
long bx[10]={0,-1,0,1,0};
long by[10]={0,0,-1,0,1};

void dfs(int ,int );

void dfs(int i,int j){
	bool pd=0;
	for(int k=1;k<=4;k++){
		int q=i+bx[k];
		int p=j+by[k];
		if(a[q][p]!=1){
			pd=1;
			break;
		}
	}
	if((i<=1||i>=n||j<=1||j>=n||a[i][j]!=0)&&(pd))return;
	a[i][j]=2;
	for(int k=1;k<=4;k++){
		int x=i+bx[k];
		int y=j+by[k];
		dfs(x,y);
	}
}

int main(){
	cin>>n;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			cin>>a[i][j];
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++){
			dfs(i,j);
		}
	
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++)
			cout<<a[i][j]<<" ";
		cout<<endl;
	}
	return 0;
}
2022/4/7 18:15
加载中...