用递归解迷宫问题
是poj的3984题貌似,刚才不知道为什么上不去~问题是给一个迷宫,0代表可以走,1代表墙。
求路径
(老师要求用递归解决)
我自己的代码如下~
可能错误很多,求高手解答~
#include<stdio.h>
bool next(int lose[5][5],int a,int b)
{
while(a<5) //判定界限,防止出界(下同)
{
if(lose[a+1][b]==0) //看看右边是不是0(下面类似)
{
next( lose[5][5] , a+1 , b);//递归
printf(" (%d,%d) ",a,b); //输出
return true;
}
else
return false;
}
while(a>1) //判定界限,防止出界
{
if(lose[a-1][b]==0)
{
next( lose[5][5] , a-1 , b);
printf(" (%d,%d) ",a,b);
return true;
}
else
return false;
}
while(b<5) //判定界限,防止出界
{
if(lose[a][b+1]==0)
{
next( lose[5][5] , a , b+1);
printf(" (%d,%d) ",a,b);
return true;
}
else
return false;
}
while(b>1) //判定界限,防止出界
{
if(lose[a][b-1]==0)
{
next( lose[5][5] , a , b-1);
printf(" (%d,%d) ",a,b);
return true;
}
else
return false;
}
if(a==b==5) //结束标志
return true;
else
return false;
}
void main()
{
int loss[5][5]={{0,1,1,1,1}{0,0,1,1,1}{1,0,0,0,1}{1,1,1,0,1}{1,1,1,0,0}}; //给一个55的迷宫
next(loss[5][5],5,5);
}
[ 本帖最后由 z8869113 于 2011-9-20 22:54 编辑 ]