求解多出口迷宫的最短路径,是在基于求解简单迷宫是否存在路径的问题的基础上的一个提高。我们首先需要认识到的是,不论是求解简单迷宫问题,还是复杂迷宫的问题,我们都需要基于栈,使用回溯法来解决问题。
- 首先,我们先来定义一个多出口的迷宫:
图中0表示墙,即无法落脚;1表示可以落脚;之后我们会用2来标记走过的路。
我们默认出口为四个边界上的点。若入口也为边界点,则出口与入口不能重合。
maze.h:
#pragma once
#include <stdio.h>
#include<stdlib.h>
#include<stddef.h>
#define MAX_ROW 6
#define MAX_COL 6
typedef struct Point{
int row;
int col;
}Point;
typedef Point SeqStackType;
typedef struct SeqStack{
SeqStackType *data;
size_t size;
size_t capacity;
}SeqStack;
typedef struct Maze{
int map[MAX_ROW][MAX_COL];
}Maz