hdu1241

hdu1241

好久没写搜索题了,把以前的题写过的重新写了下
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  }

你可能感兴趣的:(hdu1241)