首页 > 其他 > 详细

zoj 2165

时间:2014-03-22 21:27:16      阅读:519      评论:0      收藏:0      [点我收藏+]

很简单的DFS搜索水题,递归理解深了很easy的!打了一遍就ac了

bubuko.com,布布扣
#include<stdio.h>
int atr[25][25];
int count=1,n,m;
void DFS(int x,int y)
{
    int i=0;
    for(i=0;i<4;i++)
    {
        if(i==0)
        {
            if((y-1)>=0&&atr[y-1][x]==0)/*向上有点并且可以访问*/
            {
                count++;
                atr[y-1][x]=1;
                DFS(x,y-1);
            }
        }
        else if(i==1)
        {
            if((x+1)<m&&atr[y][x+1]==0)/*向上有点并且可以访问*/
            {
                count++;
                atr[y][x+1]=1;
                DFS(x+1,y);
            }
        }
        else if(i==2)
        {
            if((y+1)<n&&atr[y+1][x]==0)
            {
                count++;
                atr[y+1][x]=1;
                DFS(x,y+1);
            }
        }
        else if(i==3)
        {
            if((x-1)>=0&&atr[y][x-1]==0)
            {
                count++;
                atr[y][x-1]=1;
                DFS(x-1,y);
            }
        }
    }
}
int main(int argc, char* argv[])
{
    int i,j;
    char c;
    int sx,sy;    
    while(scanf("%d%d",&m,&n)!=EOF&&(m!=0||n!=0))
    {
        count=1;
        getchar();
        for(i=0;i<n;i++)
            {
                for(j=0;j<m;j++)
                {
                scanf("%c",&c);
                if(c==.)
                    atr[i][j]=0;
                else if(c==#)
                    atr[i][j]=-1;
                else if(c==@)
                {
                    atr[i][j]=1;
                    sx=j;sy=i;
                }
                }
                getchar();
            }
        DFS(sx,sy);
        printf("%d\n",count);
    }
    return 0;
}
bubuko.com,布布扣

zoj 2165,布布扣,bubuko.com

zoj 2165

原文:http://www.cnblogs.com/woshijishu3/p/3617822.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!