Oil Deposits

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
char map[21][21];
int M,N,res;
int xx[]={0,0,1,-1,-1,1,-1,1};
int yy[]={1,-1,0,0,1,-1,-1,1};
int fun(int x,int y)
{
 if(x<0||y<0||x>=N||y>=M)
   return 0;
   return 1;
}
void DFS(int x,int y)
{
  int i,j,x1,y1;
  map[x][y]='*';
  for(i=0;i<8;i++)
  {
    x1=x+xx[i];
    y1=y+yy[i];
    if(map[x1][y1]=='@'&&fun(x1,y1))
    {
      DFS(x1,y1);
    }
  }   
  
}
int main( )
{
  while(scanf("%d%d",&N,&M),N||M)
  {
   int i,j,a,b;
   res=0;
   getchar();
  
   for(i=0;i<N;i++)
    for(j=0;j<M;j++)
      cin>>map[i][j];
   
  
  
   for(i=0;i<N;i++)
   {
    for(j=0;j<M;j++)
      if(map[i][j]=='@')
      {
        res++;
        DFS(i,j);
      }
     
    }
   printf("%d\n",res);
  }
   
   return 0;
}
注意输入格式。。其它的跟上面那题一样。

posted on 2011-05-11 03:49  more think, more gains  阅读(115)  评论(0编辑  收藏  举报

导航