my blogs

1533简单深搜

#include<stdio.h>
#include<string.h>
char tian[101][101];
int a[101][101];i
nt fx[8][2]={{1,1},{1,-1},{-1,1},{0,1},{0,-1},{1,0},{-1,0},{-1,-1}};
int m,n;
void dfs(int c,int d)
{    int x1,x2,i;     
a[c][d]=0;     
for(i=0;i<8;i++)     
{ x1=c+fx[i][0];x2=d+fx[i][1];      
 if(a[x1][x2]==-1&&tian[x1][x2]=='@'&&x1<m&&x2<n&&x1>=0&&x2>=0)      
 dfs(x1,x2);     
}
}
main()
{ int i,j,num;  
while(scanf("%d%d",&m,&n)!=EOF&&m&&n)  
{memset(a,-1,sizeof(a)); num=0;   
for(i=0;i<m;i++)  {  scanf("%s",&tian[i]);  } 
 for(i=0;i<m;i++)  { 
   for(j=0;j<n;j++)      
 {   if(a[i][j]==-1&&tian[i][j]=='@')      
     {  dfs(i,j);  num++;           }      
 }  
} 
 printf("%d\n",num);  
}
}
posted @ 2010-08-10 13:59  Tim Haver  阅读(157)  评论(0编辑  收藏  举报