标签:
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 18650 Accepted Submission(s): 10750
1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 #define N 105 5 char mp[N][N]; 6 bool vis[N][N]; 7 int n, m; 8 bool in(int i , int j ) 9 { 10 if(i < n&&i>=0&&j<m&&j>=0) return true; 11 else return false; 12 } 13 int go[8][2] = {{1,0},{1,1},{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1}}; 14 void dfs(int i , int j) 15 { 16 if(in(i, j)&&mp[i][j]==‘@‘&&!vis[i][j]) 17 { 18 vis[i][j] = 1; 19 for(int t =0 ;t < 8 ; t++) 20 { 21 int x = i + go[t][0]; 22 int y = j + go[t][1]; 23 dfs(x,y); 24 } 25 } 26 } 27 int main() 28 { 29 while(~scanf("%d%d",&n,&m)&&(n!=0||m!=0)) 30 { 31 getchar(); 32 for(int i = 0 ;i < n ;i++) 33 { 34 for(int j = 0 ; j < m ; j++){ 35 scanf("%c",&mp[i][j]); 36 vis[i][j] = 0; 37 } 38 getchar(); 39 } 40 int cnt = 0; 41 for(int i = 0 ;i < n ; i++) 42 { 43 for(int j = 0 ;j < m ;j++) 44 { 45 if(mp[i][j]==‘@‘&&!vis[i][j]) 46 { 47 cnt++; 48 dfs(i,j); 49 } 50 } 51 } 52 printf("%d\n",cnt); 53 } 54 return 0; 55 }
标签:
原文地址:http://www.cnblogs.com/shanyr/p/4739485.html