代码&解析
- 广搜,首先把没被包围的点标记,再计算剩余无标记的点的数量(莫名言简意赅)
- 诶,好像没什么好说了,那就看代码吧
#include<bits/stdc++.h>
using namespace std;
bool a[20][20];
int f[1000][2],ans=0,h,t;
int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
int main()
{
for(int i=1;i<=10;i++)
for(int j=1;j<=10;j++)
cin>>a[i][j];
t=1,h=0,f[1][0]=f[1][1]=0;
while(h<t){
h++;
for(int i=0;i<4;i++){
int xx=dx[i]+f[h][0],yy=dy[i]+f[h][1];
if(xx<=11&&xx>=0&&yy<=11&&yy>=0&&!a[xx][yy]){
a[xx][yy]=1,t++;
f[t][0]=xx,f[t][1]=yy;
}
}
}
for(int i=1;i<=10;i++)
for(int j=1;j<=10;j++)
if(!a[i][j]) ans++;
cout<<ans<<endl;
return 0;
}