提交时间:2022-08-05 17:31:18

运行 ID: 57504

#include<iostream> #include<string> using namespace std; string im[100]; int n,ans; const int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0}; bool check(int x,int y){ return im[x][y]!='*'&&im[x][y]!=' '; } void p(){ for(int i=0;i<n;i++){ cout<<im[i]<<endl; } cout<<endl; } void flood_fill(int x,int y){ im[x][y]='*'; for(int i=0;i<4;i++){ int tx=x+dx[i],ty=y+dy[i]; if(tx>-1&&tx<n&&ty>-1&&ty<im[tx].size()&&check(tx,ty)) flood_fill(tx,ty); } } /** 4 aa**bbbca a**a***bc b* b* f*f *d**eee */ int main(){ scanf("%d",&n); getchar(); for(int i=0;i<n;i++) getline(cin,im[i]); for(int i=0;i<n;i++){ int len=im[i].size(); for(int j=0;j<len;j++){ if(check(i,j)){ ans++; flood_fill(i,j); // p(); } } } printf("%d",ans); return 0; }