HDU 1241 Oil Deposits
一道典型的搜索题。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char map[124][124];
int n,m;
int d[8][2] = { -1,-1,0,-1,1,-1,-1,0,1,0,-1,1,0,1,1,1 };
void DFS( int x, int y )
{
for( int i = 0 ; i< 8 ; i++ )
{
int dx = x + d[i][0];
int dy = y + d[i][1];
if( map[dx][dy]=='@' )
{
map[dx][dy]='*';
DFS( dx ,dy );
}
}
}
int main( )
{
int n,m;
while( scanf( "%d%d",&n,&m ),n!=0||m!=0 )
{
memset( map , 0 ,sizeof( map ) );
for( int i= 1 ; i <= n ; i++ )
{
scanf( "%s" ,map[i]+1 );
}
int count = 0;
for(int i= 1; i<= n ; i++ )
{
for( int j = 1 ;j<= m ; j++ )
{
if( map[i][j]=='@' )
{
map[i][j]='*';
count++;
DFS( i , j );
}
}
}
printf( "%d\n",count );
}
return 0;
}

浙公网安备 33010602011771号