您的位置:首页 > 编程语言 > C语言/C++

C语言对DFS简单应用(Red and Black

2015-02-03 19:56 363 查看
#include<stdio.h>
int dir[4][2]={{1,0},{0,-1},{0,1},{-1,0}};
char maze[25][25];
int num,m,n;
void DFS(int x,int y)
{
num++;
maze[x][y]='#';//防止重复记录
for(int k=0;k<4;k++)
{
int X=x+dir[k][0],Y=y+dir[k][1];
if(X>=0&&Y>=0&&X<m&&Y<n&&maze[X][Y]=='.')
{
DFS(X,Y);
}
}
return ;
}
int main()
{
int i,j,p,q;
while(scanf("%d%d",&n,&m)&&n>0&&m>0)
{
num=0;
getchar();//吃掉回车符
for(i=0;i<m;i++)
scanf("%s",&maze[i]);//注意对字符串的处理
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if(maze[i][j]=='@')
{
maze[i][j]='#';
DFS(i,j);
break;
}
printf("%d\n",num);
}
return 0;
}


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