没有对程序进行优化,使用最原始的想法进行编程。
/*
迷宫问题的深度优先回溯法---C++编程练习
Author : Michael
Date : 2014-12-31
E-mail : 1192065414@qq.com
**/
#include <iostream>
#include <stack>
#include <string>
#include <map>
using namespace std;
/* 使用二维数组记录迷宫 */
#define MAX_ROW_SIZE 8
#define MAX_COLUMN_SIZE 11
const char cMouseMap[MAX_ROW_SIZE][MAX_COLUMN_SIZE] = {
{1,1,1,1,1,1,1,1,1,1,1},
{1,0,1,1,0,1,1,1,1,1,1},
{1,0,0,0,0,1,1,1,1,1,1},
{1,1,1,0,0,0,1,1,1,1,1},
{1,1,0,1,1,0,1,0,1,1,1},
{1,1,0,0,0,0,1,0,0,0,1},
{1,1,0,0,0,0,0,0,1,0,1},
{1,1,1,1,1,1,1,1,1,1,1}
};
/*
我们需要记录,有哪些线路我们已经搜索过的,还有哪些路是暂未搜索过的(sPath 结构体对应元素值为 0),
而且需要记录那一些探索过的路是通的,正在走的路(sPath 结构体对应元素值为 1),哪些是不通的(sPath 结构体对应元素值为 -1)
若还没有到终点,而且保存结果的栈不空,表明还没有探索完,继续找一个还没有探索过的路进行探索(sPath 结构体对应元素值为 0)
*/
typedef struct sPoint {
sPoint():x(0),y(0) {}
int x;
int y;
}sPoint;
typedef struct sPath {
sPath():left(0),up(0)