您的位置:首页 > 其它

HDU-1312-Red and Black

2014-10-05 20:23 351 查看
题目链接

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

此题注意n,m 表示到底是行还是列

代码

#include<stdio.h>

#include<string.h>

int n,m,cnt;
char s[30][30];
int to[4][2]={{1,0},{0,1},{-1,0},{0,-1}};

void dfs(int i,int j)
{
cnt++;
s[i][j]='#';
int k;
for(k=0;k<4;k++)
{
int x=i+to[k][0];
int y=j+to[k][1];
if(x>=0&&x<n&&y>=0&&y<m&&s[x][y]=='.')
dfs(x,y);
}
}
int main(void)
{
int i,j;
int fi,fj;
while(scanf("%d%d",&m,&n)==2&&(n+m))
{
getchar();
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%c",&s[i][j]);
if(s[i][j]=='@')
{
fi=i;
fj=j;
}
}
getchar();
}
cnt=0;
s[fi][fj]='#';
dfs(fi,fj);
printf("%d\n",cnt);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: