#include<bits/stdc++.h> using namespace std; //r1:谷仓数量,r2:奶牛数量 //lx ly:左上角坐标 rx ry:右下角坐标 int lx,ly,rx,ry,s,r1,r2; //迷宫 char a[150][150]; //探索每个点及相邻的# void fun(int x,int y){ a[x][y] = '.';//走过的路径标记 s++; //更新左上和右下角的坐标 if(x<lx) lx=x; if(y<ly) ly=y; if(x>rx) rx=x; if(y>ry) ry=y; if(a[x-1][y]=='#') fun(x-1,y); if(a[x+1][y]=='#') fun(x+1,y); if(a[x][y-1]=='#') fun(x,y-1); if(a[x][y+1]=='#') fun(x,y+1); } int main(){ int n,m; cin>>n>>m; int i,j; for(i = 1;i <= n;i++){ for(j = 1;j <= m;j++){ cin>>a[i][j]; } } //遍历每个点 for(i = 1;i <= n;i++){ for(j = 1;j <= m;j++){ //如果是谷仓或者奶牛 if(a[i][j] == '#'){ lx=i;ly=j;rx=i;ry=j; s = 0; fun(i,j);//探索相邻点 //如果是矩形(是谷仓) /* rx-lx+1是宽,ry-ly+1是长,当扩张的矩形的面积等于 #的个数,那#组成的图形就是矩形,否则不是 */ if(s == (rx-lx+1) * (ry-ly+1)) r1++; else r2++;//是奶牛 } } } cout<<r1<<endl; cout<<r2<<endl; } /************************************************************** Problem: 1440 User: admin Language: C++ Result: Accepted Time:101 ms Memory:2584 kb ****************************************************************/