hdu 1312

Problem : http://acm.hdu.edu.cn/showproblem.php?pid=1312

简单搜索,不多说了...

#include<cstdio>
int w,h,ans=0;
char g[20][25];
bool f(int x,int y){
    return (x>=0 && x<h && y>=0 && y<w);
}
void dfs(int x,int y){
    ans++;
    g[x][y]='#';
    for(int dx=-1;dx<=1;dx++)
        for(int dy=-1;dy<=1;dy++)
            if(dx==0 ^ dy==0){
                if(f(x+dx,y+dy) && g[x+dx][y+dy]=='.')
                    dfs(x+dx,y+dy);
            }
}
int main()
{
    while(scanf("%d%d",&w,&h),w+h){
        for(int i=0;i<h;i++)
            scanf("%s",&g[i]);
        ans=0;
        for(int i=0;i<h;i++)
            for(int j=0;j<w;j++)
                if(g[i][j]=='@')
                    dfs(i,j);
        printf("%d\n",ans);
    }
    return 0;
}
View Code

其中异或^的运用,从神牛丽洁桑膜拜过来的...。

posted @ 2014-02-09 19:52  Cshhr  阅读(162)  评论(0编辑  收藏  举报