这题 水的惨不忍睹 但是呢 因为 我心情很好 哈哈~
直接给题目 上代码...
1 // dfs 2 3 #include <iostream> 4 #include <cstring> 5 #include <ctype.h> 6 using namespace std; 7 8 int n , m; 9 int cnt; 10 const int size = 110; 11 char maze[size][size]; 12 int pos[8][2] = {0,1,0,-1,1,0,-1,0,1,1,1,-1,-1,-1,-1,1}; 13 14 void dfs( int x , int y ) 15 { 16 if( x<0 || x>=n || y<0 || y>=m ) 17 return; 18 for( int i = 0 ; i<8 ; i++ ) 19 { 20 if( maze[ x+pos[i][0] ][ y+pos[i][1] ] == '@' ) 21 { 22 maze[ x+pos[i][0] ][ y+pos[i][1] ] = '*'; 23 dfs( x+pos[i][0] , y+pos[i][1] ); 24 } 25 } 26 } 27 28 int main() 29 { 30 int i , j; 31 while( ~scanf("%d %d",&n,&m) &&(n||m) ) 32 { 33 cnt = 0; 34 memset( maze , '*' , sizeof(maze) ); 35 for( i = 0 ; i<n ; i++ ) 36 { 37 for( j = 0 ; j<m ; j++ ) 38 { 39 do 40 { 41 scanf( "%c",&maze[i][j] ); 42 }while( isspace(maze[i][j]) ); 43 } 44 } 45 for( i = 0 ; i<n ; i++ ) 46 { 47 for( j = 0 ; j<m ; j++ ) 48 { 49 if( maze[i][j]=='@' ) 50 { 51 cnt++; 52 dfs( i , j ); 53 } 54 } 55 } 56 printf( "%d ",cnt ); 57 } 58 return 0; 59 }
today:
我和你 还是 都是 念旧 的人
你说我 骗了你
你猜对了