深搜模板

来源:互联网 发布:安广网络潘集分公司 编辑:程序博客网 时间:2024/05/22 05:18
/*深搜的灵魂所在就是递归*/
//以此题为例http://acm.hdu.edu.cn/showproblem.php?pid=1312
#include<stdio.h>#include<string.h>int m,n;char a[100][100];int aa[100][100];void DFS(int x,int y){    if(x>=0&&y>=0&&x<m&&y<n)    {        if(a[x][y]=='.'&&!aa[x][y])        {            aa[x][y]=1;            DFS(x,y-1);            DFS(x,y+1);            DFS(x+1,y);            DFS(x-1,y);        }    }}int main(){    int x,y,k,q,i,j;    while(scanf("%d%d",&n,&m)!=EOF,m||n)    {        k=0;        memset(aa,0,sizeof(aa));        getchar();        for(x=0; x<m; x++){            for(y=0; y<n; y++)            {                scanf("%c",&a[x][y]);                if(a[x][y]=='@')                {                    i=x;                    j=y;                }            }            getchar();        }        a[i][j]='.';        DFS(i,j);        int sum=0;        for(x=0; x<m; x++) for(y=0; y<n; y++)  sum+=aa[x][y];        printf("%d\n",sum);    }    return 0;}

1 0