任务: 可以输入一个任意大小的迷宫数据,用非递归的方法求出一条走出迷宫的路径,并将路径输出。
要求:写明存储结构、迷宫求解的算法(可以使用程序流程图)、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法。
思路: 此题要求一个走出迷宫的路径,我这里还实现了求迷宫的最短路,最短路问题我用两个工具来实现,一是使用结构体数据类型,因为每一步都包含x轴,y轴,步数和其他一些参数,这样的话就使结构更加清晰,二是我使用了C++标准模板库的先进先出队列,通过对bfs经典算法的实现,这使我轻而易举的实现了求最短路。因为题目还涉及到一个打印路径的问题,所以我们还要加上记忆化搜索。
代码:
#include"stdio.h"
#include"string.h"
#include"queue"
using namespace std;
const int maxn=100;
char ai[maxn][maxn];
int x1,y1,x2,y2,m,n;
bool used[maxn][maxn];
int fx[4][2]={
1,0,-