您的位置:首页 > 其它

hdu-1312-Red and Black

2014-05-02 16:38 357 查看
#include<stdio.h>

#include<string.h>

char a[21][21];

int w,h,sum,b[21][21];

void dfs(int x,int y)

{
sum++;
if(!b[x+1][y]&&a[x+1][y]=='.'&&x+1<h)
{
b[x+1][y]=1;
dfs(x+1,y);
// b[x+1][y]=0;
}
if(!b[x-1][y]&&a[x-1][y]=='.'&&x-1>=0)
{
b[x-1][y]=1;
dfs(x-1,y);
// b[x-1][y]=0;
}
if(!b[x][y+1]&&a[x][y+1]=='.'&&y+1<w)
{
b[x][y+1]=1;
dfs(x,y+1);
// b[x][y+1]=0;
}
if(!b[x][y-1]&&a[x][y-1]=='.'&&y-1>=0)
{
b[x][y-1]=1;
dfs(x,y-1);
// b[x][y-1]=0;
}

}

int main()

{

    int i,j;
while(scanf("%d%d",&w,&h)&&w+h)
{

int k1,k2;
memset(b,0,sizeof(b));
getchar();
for(i=0;i<h;i++)
{
for(j=0;j<w;j++)
{
scanf("%c",&a[i][j]);
if(a[i][j]=='@')
{
k1=i;
k2=j;
}
}
getchar();
}
sum=0;
dfs(k1,k2);
b[k1][k2]=1;
printf("%d\n",sum);
}
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: