hdu1312简单搜索

#include<stdio.h>
#include<string.h>
int dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}};

char a[100][100];
int sum,w,h;
void sousuo(int x,int y)
{    int next_x,next_y;
     
	for(int i=0;i<=3;i++)
	{   
	    next_x=x+dir[i][0];
		next_y=y+dir[i][1];
		if(next_x<0||next_x>=h||next_y<0||next_y>=w)
		 continue;
		 if(a[next_x][next_y]=='.')
		  {   
		    a[next_x][next_y]='#';
			   sum++;
		    
			  sousuo(next_x,next_y);
		   
		  }
	}
}
int main()
{   int i,j;//不要在这重复定义w,h,不然结果sum输出全为1,检查了好久
            //没看出来
	while(scanf("%d%d",&w,&h)!=EOF)
	{    
	    int X,Y;
	    if(w==0&&h==0) break;
	   
		for(i=0;i<h;i++)
	   {
	    	scanf("%s",a[i]);  
		   for(j=0;j<=w-1;j++)
		  {
		    if(a[i][j]=='@') 
		    {
		   	  X=i;Y=j;
		    }
		  }
		  
	    }
	    sum=1;
	    
	    sousuo(X,Y);
	    printf("%d\n",sum);
	}
}

 

posted @ 2013-04-14 15:49  宛如  阅读(106)  评论(0)    收藏  举报