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/archive/2011/11/17/2253336.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值