题解
【基础】填涂颜色
1 条题解
-
0
#include <bits/stdc++.h> using namespace std; int N; int fx[5]={0,0,1,0,-1}; int fy[5]={0,1,0,-1,0}; int a[50][50]; void dfs(int x,int y) { //使用dfs for(int i=1;i<5;i++) { int tx,ty; tx=x+fx[i]; ty=y+fy[i]; if(x>=1&&y>=1&&a[tx][ty]==0&&x<=N&&y<=N) { a[tx][ty]=-1;//标记,并且写入数据 dfs(tx,ty); } } } 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++) { if(a[i][1]!=1) { a[i][1]=-1; dfs(i,1); } if(a[i][N]!=1) { a[i][N]=-1; dfs(i,N); } } for(int i=1;i<=N;i++) { if(a[1][i]!=1) { a[1][i]=-1; dfs(1,i); } if(a[N][i]!=1) { a[N][i]=-1; dfs(N,i); } } for(int i=1;i<=N;i++) { for(int j=1;j<=N;j++) { if(a[i][j]==-1)cout<<0<<" "; else if(a[i][j]==1)cout<<1<<" "; else cout<<2<<" "; // cout<<a[i][j]<<" "; } cout<<endl; } }
- 1