P1162 填塗顏色
阿新 • • 發佈:2018-12-11
#include<bits/stdc++.h> using namespace std; const int MAXN=31; int a[MAXN][MAXN]={}; int vis[MAXN][MAXN]={}; int n; void dfs(int x,int y){ if(x<=0||x>n||y<=0||y>n||vis[x][y]==1||a[x][y]==1) return;//到達外邊界或者圈(內邊界) vis[x][y]=1; dfs(x-1,y);dfs(x+1,y);dfs(x,y-1);dfs(x,y+1); } int main() { freopen("in.txt","r",stdin); 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++){ dfs(i,1);dfs(i,n); dfs(1,i);dfs(n,i);//從上下左右四邊進行dfs一定可以把外面的圈全部遍歷 } for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if(vis[i][j]==1||a[i][j]==1) cout<<a[i][j]<<' '; else cout<<2<<' '; } cout<<endl; } return 0; }