新学的深搜
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了新学的深搜相关的知识,希望对你有一定的参考价值。
/*深搜的灵魂所在就是递归*/
//以此题为例http://acm.hdu.edu.cn/showproblem.php?pid=1312
#include<stdio.h>
#include<string.h>
char map[25][25];
int n,m;
int mark[25][25];
void dfs(int x,int y)
{
if(x>=0&&y>=0&&x<n&&y<m)
{
if(map[x][y]==‘.‘&&mark[x][y]==0)
{
mark[x][y]=1;
dfs(x+1,y);
dfs(x-1,y);
dfs(x,y+1);
dfs(x,y-1);
}
}
}
int main()
{
while(scanf("%d %d",&m,&n)&&(n!=0&&m!=0))
{
memset(mark,0,sizeof(mark));
int i,j;
int x,y;
for(i=0;i<n;i++)
{
scanf("%s",&map[i]);
}
int flag=0;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(map[i][j]==‘@‘)
{
x=i;
y=j;
flag=1;
break;
}
}
if(flag)
break;
}
map[i][j]=‘.‘;
dfs(x,y);
int ans=0;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
ans+=mark[i][j];
}
}
printf("%d\n",ans);
}
return 0;
}
以上是关于新学的深搜的主要内容,如果未能解决你的问题,请参考以下文章