1359:围成面积
技巧:将整个二维数组再围一圈!
1 #include<iostream> 2 #include<cstdio> 3 #include<queue> 4 using namespace std; 5 const int N=12; 6 int ans,a[N][N],t[]={-1,1,0,0,0,0,-1,1}; 7 queue<int> q; 8 void cnt(){ 9 while(!q.empty()){ 10 int x=q.front(),y; 11 q.pop(); 12 y=q.front(); 13 q.pop(); 14 a[x][y]=1; 15 for(int i=0;i<4;i++){ 16 int nx=x+t[i],ny=y+t[i+4]; 17 if(nx>=0&&nx<N&&ny>=0&&ny<N&&!a[nx][ny]){ 18 q.push(nx);q.push(ny); 19 } 20 } 21 } 22 } 23 int main(){ 24 for(int i=1;i<=10;i++) 25 for(int j=1;j<=10;j++) 26 scanf("%d",&a[i][j]); 27 q.push(0);q.push(0); 28 cnt(); 29 for(int i=1;i<=10;i++) 30 for(int j=1;j<=10;j++) 31 if(!a[i][j])ans++; 32 cout<<ans; 33 return 0; 34 }