1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 using namespace std; 5 6 int n,m,cnt; 7 char mp[110][110]; 8 bool vis[110][110]; 9 int dir[8][2]={{1,0},{1,1},{1,-1},{0,1},{0 ,- 1 },{- 1 , 0 },{- 1 , 1 },{- 1 ,- 1 }}; 10 11 void dfs( int x, int y) // Look for the next eight for each @ @ in the directions, and marked, become a whole 12 { 13 for ( int i= 0 ;i< 8 ;i++ ) 14 { 15 int dx= x+dir[i][ 0 ]; 16 int dy= y+dir [i][ 1 ]; 17 if(dx<0||dx>n-1||dy<0||dy>m-1) 18 continue; 19 if(mp[dx][dy]=='@'&&vis[dx][dy]==0) 20 { 21 vis[dx][dy]=1; 22 dfs(dx,dy); 23 } 24 } 25 } 26 27 int main() 28 { 29 while(cin>>n>>m &&n &&m) 30 { 31 memset(vis,0,sizeof(vis)); 32 cnt=0; 33 34 for(int i=0;i<n;i++) 35 cin>>mp[i]; 36 for(int i=0;i<n;i++) 37 { 38 for(int j=0;j<m;j++) 39 { 40 if(mp[i][j]=='@'&&vis[i][j]==0) 41 { 42 cnt++; 43 dfs(i,j); 44 } 45 } 46 } 47 cout<<cnt<<endl; 48 } 49 }
Oil Deposits
Guess you like
Origin http://43.154.161.224:23101/article/api/json?id=325382374&siteId=291194637
Ranking