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;
}
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;
}
相关文章推荐
- Red and Black hdu 1312
- HDU 1312 Red and Black (第一道广搜)
- HDU 1312 Red and Black
- HDU1312 Red and Black
- hdu 1312 Red and Black(dfs入门)
- HDU 1312 Red and Black
- Red and Black&&http://acm.hdu.edu.cn/showproblem.php?pid=1312
- hdu-1312-Red and Black
- hdu 1312 Red and Black 解题报告
- hdu 1312 Red and Black <java>
- HDu 1312深度搜索---Red and Black
- HDU1312 Red and Black(搜索)
- hdu 1312 Red and Black(搜索)
- hdu 1312 Red and Black DFS搜索 or BFS搜索
- HDU 1312 Red and Black
- HDU 1312 Red and Black(BFS)
- HDU 1312 Red and Black
- hdu 1312 Red and Black
- hdu 杭电 1312 Red and Black
- [HDU] 1312Red and Black -用广搜求能探寻到的点的数目