采用递归算法求解迷宫问题,输出从入口到出口的所有路径。
递归求解我真的也不是理解的很透,但是明显感觉到递归和栈、队列求解很像,都是树形的搜索过程。
为了直观地观察过程,补充了一个动画过程,可以用来观察算法的搜索过程。
从(1,1)走到(8,8),实心圆是不允许走的,空心圆是可以走的部分,星星是走过的路径。
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define MaxSize 100
int mg[10][10] = { //迷宫
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 0, 0, 1, 0, 0, 0, 1, 0, 1},
{1, 0, 1, 1, 0, 0, 0, 1, 0, 1},
{1, 0, 0, 0, 0, 1, 1, 0, 0, 1},
{1, 0, 1, 1, 1, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 1, 0, 0, 0, 0, 1},
{1, 0, 1, 0, 0, 0, 1, 0, 0, 1},
{1, 0, 1, 1, 1, 0, 1, 1, 0, 1},
{1, 1, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
};
char mg_graph[10][10];
typedef struct {
int i;
int j;
}Box;
typedef struct {
Bo