32分,感觉和题解基本差不多但还是32分
查看原帖
32分,感觉和题解基本差不多但还是32分
338786
mushroom_knight楼主2020/5/15 17:39

RT

#include<bits/stdc++.h>
using namespace std;
int N;
short cell[35][35]; 
short vis[35][35];
inline void dfs(int x,int y){
	if(x>N||x<1||y>N||y<1||cell[x][y]!=0){
		return;
	}
	cell[x][y]=1;
	dfs(x-1,y);
	dfs(x+1,y);
	dfs(x,y+1);
	dfs(x,y-1);
}
int main(){
	ios::sync_with_stdio(0);
    cin.tie(0);
    cin>>N;
	int n=N; 
	for(register int i=1;i<=n;++i){
		for(register int j=1;j<=n;++j){
			cin>>cell[i][j];
			if(cell[i][j]==1){
				vis[i][j]=-1;
			}
		}
	}
	for(register int i=1;i<=n;++i){
		if(cell[i][1]!=1){
			dfs(i,1);
		}
		if(cell[i][n]!=1){
			dfs(i,n);
		}
	}
	for(register int i=1;i<=n;++i){
		if(cell[1][i]!=1){
			dfs(1,i);
		}
		if(cell[n][i]!=1){
			dfs(n,i);
		}
	}
	for(register int i=1;i<=n;++i){
		for(register int j=1;j<=n;++j){
			if(vis[i][j]==-1){
				cout<<"1 ";
			}
			else if(vis[i][j]==0){
				cout<<"2 ";
			}
			else{
				cout<<"0 ";
			}
		}
		cout<<endl;
	} 
	return 0;
}

2020/5/15 17:39
加载中...