您的位置:首页 > 其它

HDU1312 Red and Black(DFS)

2015-09-02 09:11 405 查看
本来是一道简单的DFS的练习题,但是因为少加一个getchar()导致自己调试了半天。

#include<iostream>
using namespace std;

int dir[4][2] = {{1,0},{0,1},{-1,0},{0,-1}};
int n,m,px,py,sum;
char str[30][30];

void dfs(int x,int y){
int dx,dy;
sum++;
str[x][y] = '#';
for(int i = 0;i<4;i++){
dx = x + dir[i][0];
dy = y + dir[i][1];
if(str[dx][dy] == '.' && dx>=0 && dx<m && dy>=0 && dy<n)
dfs(dx,dy);
}
return ;
}

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