算法丑陋,时间略长,还望指教。
#include <stdio.h>
#include <stdlib.h>
int flag;
void findway(int size,char*a,char*b,int ay,int ax,int by,int bx)//在a位置寻找走向b的下一步
{
int side=size-2;//真实迷宫的大小
//输入问题
if(*a=='#'||*b=='#')
return;
//找到的判断
if((by==ay&&(bx==ax-1||bx==ax+1))||(bx==ax&&(by==ay+1||by==ay-1))||(by==ay&&ax==bx))
{
flag=1;
return;
}
//必然找不到的情况
if(*(a+1)=='#'&&*(a-1)=='#'&&*(a+size)=='#'&&*(a-size)=='#')
return;
//还有希望的情况
else
{
*a='#';//反正是废了
if(*(a+size)=='.')
findway(size,a+size,b,ay+1,ax,by,bx);
if(*(a-size)=='.')
findway(size,a-size,b,ay-1,ax,by,bx);
if(*(a-1)=='.')
findway(size,a-1,b,ay,ax-1,by,bx);
if(*(a+1)=='.')
findway(size,a+1,b,ay,ax+1,by,bx);
}
}
int main()
{
int number,i,j;
scanf("%d",

本文探讨了一种使用C语言编写的递归算法来解决迷宫问题的方法,尽管算法效率不高,但展示了递归在解决复杂问题中的应用。欢迎读者提出改进意见。
3470

被折叠的 条评论
为什么被折叠?



