80分求教

P1162 填涂颜色

```cpp #include<bits/stdc++.h> using namespace std; int rowadd[4]={0,0,-1,1}; int coladd[4]={1,-1,0,0}; int n; int a[40][40]; void bfs(int row,int col) { if(row<0||row>=n||col<0||col>=n||a[row][col]==1||a[row][col]==2) { return; } a[row][col]=2; for(int i=0;i<4;i++) { bfs(row+rowadd[i],col+coladd[i]); } } int main() { cin>>n; memset(a,0xff,sizeof(a)); int startx=0,starty=0; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { cin>>a[i][j]; } } for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(i==0||i==n-1||j==0||j==n-1) { if(a[i][j]==0) { bfs(i,j); } } } } for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(a[i][j]==2) { cout<<"0 "; } else if(a[i][j]==0) { cout<<"2 "; } else { cout<<"1 "; } } cout<<endl; } return 0; } ``` 答案
by baozehao @ 2019-08-14 13:51:51


|