任务:使用C++实现深度寻路算法。
效果:在一张由1和0组成的二维地图中,1代表墙壁,0代表通道,输入终点和起点,利用深度寻路算法找出由起点到终点的路径。
main.h代码如下:
#include <iostream>
#include "MyStack.h"
#include "windows.h"
//地图行数,列数
#define ROWS 8
#define COLS 8
using namespace std;
//枚举类型,探索方向
enum Direct {D_up,D_right,D_down,D_left};
//定义坐标,表示位置
struct Pos {
int Row;
int Col;
};
//辅助地图基本类
struct Mark {
int val; //0表示通路,1表示墙壁
bool bIsFound; //是否已被探索
Direct DirSearch; //当前寻路方向
};
//重载运算符 == ,用于Pos变量的比较
bool operator ==(const Pos& p1, const Pos& p2) {
if (p1.Row == p2.Row && p1.Col == p2.Col)
{
return true;
}
return false;
}
//重载运算符 != ,用于Pos变量的比较
bool operator !=(const Pos& p1, const Pos& p2) {
if (p1.Row != p2.Row || p1.Col != p2.Col)
{
return true;
}
return false;
}
//打印坐标位置
void PrintPos(const Pos& MyPos)
{
printf_s("(%d,%d)\n", MyPos.Row, MyPos.Col);
}
//打印实时演算情况
void PrintMap(int Map[ROWS][COLS], Pos CurrentPos)
{
//清屏
system("cls");
for (int i = 0; i < ROWS; i++)
{
for (int j = 0; j < COLS; j++)
{
if (CurrentPos.Row == i && CurrentPos.Col == j)
{
cout << "人";
}
else if (Map[i][j] == 1)
{
cout << "口";
}
else
{
cout << " ";