码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 1312 Red and Black(dfs)

时间:2015-01-25 06:30:20      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

 

 

技术分享
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
char mat[50][50];
int n,m;
int ans;
int op[4][2]={0,1,0,-1,1,0,-1,0};
bool ok(int x,int y)
{
    if(0<=x&&x<n&&0<=y&&y<m&&mat[x][y]==.) return true;
    return false;
}
void dfs(int x,int y)
{
    ans++;
    for(int i=0;i<4;i++)
    {
       int tx=x+op[i][0];
       int ty=y+op[i][1];
        if(ok(tx,ty))
            {
                mat[tx][ty]=*;
                dfs(tx,ty);
            }
    }
}
int main()
{
    int i,j,k;
    int x,y;
    while(scanf("%d%d",&m,&n)!=EOF)
    {
        if(n==0&&m==0) break;
        ans=0;
        for(i=0;i<n;i++)
        {
            scanf("%s",mat[i]);
            for(j=0;j<m;j++)
            {
                if(mat[i][j]==@) {x=i;y=j;}
            }
        }
        dfs(x,y);
        //for(i=0;i<n;i++) printf("%s\n",mat[i]);
        printf("%d\n",ans);
    }
    return 0;
}
View Code

 

hdu 1312 Red and Black(dfs)

标签:

原文地址:http://www.cnblogs.com/sola1994/p/4246954.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!