#include<iostream> #include<cstring> using namespace std; int R,C; char map[105][105]; int cnt; void dfs(int i,int k) { if(map[i][k]==‘*‘||i<0||k<0||i>=R||k>=C) return; map[i][k]=‘*‘; dfs(i-1,k-1); dfs(i-1,k); dfs(i-1,k+1); dfs(i,k-1); dfs(i,k+1); dfs(i+1,k-1); dfs(i+1,k); dfs(i+1,k+1); } int main(void) { while(cin>>R>>C) { if(R==0&&C==0) break; for(int i=0;i<R;i++) for(int k=0;k<C;k++) { cin>>map[i][k]; } cnt=0; for(int i=0;i<R;i++) for(int k=0;k<C;k++) { if(map[i][k]==‘@‘) { dfs(i,k); cnt++; } } printf("%d\n",cnt); } }
原文:http://www.cnblogs.com/wangmenghan/p/5447917.html