好久没写搜索题了,把以前的题写过的重新写了下
http://acm.hdu.edu.cn/showproblem.php?pid=1241
1 #include <iostream>
2
3 using namespace std;
4 const int N=101;
5 const int M=101;
6 char mp[N][M];
7 int dir[8][2]={1,0,-1,0,0,1,0,-1,1,1,1,-1,-1,-1,-1,1};
8 int m,n;
9 void Input()
10 {
11 for(int i=0;i<m;i++)
12 for(int j=0;j<n;j++)
13 cin>>mp[i][j];
14 }
15 void dfs(int i,int j)
16 {
17 if(mp[i][j]=='@')mp[i][j]='*';
18 for(int r=0;r<8;r++){
19 int x=i+dir[r][0];
20 int y=j+dir[r][1];
21 if(x<0||y<0||x>=m||y>=n||mp[x][y]=='*')continue;
22 dfs(x,y);
23 }
24 return ;
25 }
26 int process()
27 {
28 int ans=0;
29 for(int i=0;i<m;i++){
30 for(int j=0;j<n;j++){
31 if(mp[i][j]=='@'){
32 dfs(i,j);
33 ++ans;
34 }
35 }
36 }
37 return ans;
38 }
39 int main()
40 {
41 while(cin>>m>>n,m+n){
42 Input();
43 cout<<process()<<endl;
44 }
45 return 0;
46 }
posted on 2008-07-21 11:46
小果子 阅读(434)
评论(0) 编辑 收藏 引用