poj 1979

来源:互联网 发布:q das软件使用说明 编辑:程序博客网 时间:2024/04/28 10:47

dfs算法

附上代码:

#include<stdio.h>#include<string.h>#define N 20+10int w,h,I,J;char s[N][N];int vis[N][N];int mov[4][2]={{0,1},{1,0},{0,-1},{-1,0}};void dfs(int x,int y){    int i,j,k,tx,ty;    vis[x][y]=1;    for(i=0;i<4;i++)    {        tx=x+mov[i][0];        ty=y+mov[i][1];        if(tx<h&&tx>=0&&ty>=0&&ty<w&&!vis[tx][ty]&&s[tx][ty]!='#')        {            dfs(tx,ty);            continue;        }    }    return;}int main(){    int i,j,k,n,m;    int counter;    //freopen("D:\\in.txt","r",stdin);    while(scanf("%d%d",&w,&h)==2&&(w||h))    {        memset(vis,0,sizeof(vis));        counter=0;        getchar();        for(i=0;i<h;i++)        {            for(j=0;j<w;j++)            {                scanf("%c",&s[i][j]);                if(s[i][j]=='@')                {                    I=i;                    J=j;                }            }            getchar();        }        dfs(I,J);        for(i=0;i<h;i++)        {            for(j=0;j<w;j++)            if(vis[i][j]==1)            {                counter++;            }        }        printf("%d\n",counter);    }    return 0;}


0 0