POJ1979(DFS)

      题意就是:从起点开始走,走到无路可走,一共走了几步?深搜。走一步,计数器加1。

      代码如下:

#include<stdio.h>

char a[20][20];
int d[4][2]={{-1,0},{0,1},{1,0},{0,-1}};
int wid,len,cnt;
void dfs(int x,int y);

int main()
{
int i,j,bx,by;

while(scanf("%d%d",&len,&wid) == 2 )
{
if( !len ) break;
cnt = 0 ;
for(i = 0 ; i < wid ; ++i)
{
scanf("%s",a[i]);
for(j = 0 ; j < len ; ++j)
if(a[i][j] == '@')
{
bx = i ; by = j;
}
}

dfs(bx,by);
printf("%d\n",cnt);
}
return 0;
}

void dfs(int x,int y)
{
int dx,dy,i;
a[x][y] = '#';
++cnt;
for(i = 0 ; i < 4 ; ++i )
{
dx = x + d[i][0];
dy = y + d[i][1];

if(dx < 0 || dx >= wid || dy < 0 || dy >= len )
continue;
if(a[dx][dy] == '.')
dfs(dx,dy);
}
}
原文地址:https://www.cnblogs.com/HpuAcmer/p/2253336.html