3.面积
这个题和第二题是一个意思,只不过把换成2改成计数而已
1 #include<iostream> 2 #include<queue> 3 #include<algorithm> 4 using namespace std; 5 int n=10; 6 int map[15][15]; 7 bool vis[15][15]; 8 typedef pair<int,int>PII;//+typedef PII变量变类型 9 queue<PII>q; 10 int dx[5]={0,0,1,-1}; 11 int dy[5]={1,-1,0,0}; 12 int cnt; 13 14 bool bound(int nn,int mm) 15 { 16 if(nn>=0&&nn<=11&&mm>=0&&mm<=11) return 1; 17 else return 0; 18 } 19 20 void BFS(int x,int y) 21 { 22 while(!q.empty()) 23 { 24 int nowx=q.front().first; 25 int nowy=q.front().second; 26 q.pop();//不要拉下!!! 27 for(int i=0;i<4;i++) 28 { 29 int xx=nowx+dx[i]; 30 int yy=nowy+dy[i]; 31 if(bound(xx,yy)==1&&vis[xx][yy]==0&&map[xx][yy]==0) 32 { 33 vis[xx][yy]=1; 34 q.push(make_pair(xx,yy)); 35 } 36 } 37 } 38 39 } 40 int main() 41 { 42 for(int i=1;i<=10;i++) 43 for(int j=1;j<=10;j++) 44 cin>>map[i][j]; 45 q.push(make_pair(0,0));//make_pair从参数类型推导目标类型 46 vis[0][0]=1;//!! 47 48 BFS(0,0); 49 50 for(int i=1;i<=10;i++) 51 for(int j=1;j<=10;j++) 52 if(vis[i][j]==0&&map[i][j]==0) 53 cnt++; 54 cout<<cnt; 55 return 0; 56 }