#include<iostream.h>
#include<iomanip.h>
#define M 11
#define N 10
//默认迷宫结构
char maze_array[M][N]=
{
{1,1,1,1,1,1,1,1,1,1},
{0,0,0,1,0,0,0,1,0,1},
{1,0,0,1,0,0,0,1,0,1},
{1,0,0,1,0,1,1,0,1,1},
{1,0,1,1,1,0,0,1,0,1},
{1,0,0,0,1,0,0,0,0,1},
{1,0,1,0,0,0,1,0,1,1},
{1,0,1,1,1,1,0,0,1,1},
{1,1,1,0,0,0,1,0,1,1},
{1,1,1,0,0,0,0,0,0,0},
{1,1,1,1,1,1,1,1,1,1}
};
//记录迷宫结点的路过次数
int maze_node_passby_array[M][N]=
{
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0}
};
//输出当前的迷宫局势
void print_maze();
//输出记录路径结点出现次数的数组
void print_maze_node_passby_array();
//路径结点类
class Maze_Path_Node
{
private:
int i;
int j;
int path_direction;
int number;
public:
Maze_Path_Node(int m=0,int n=0,int direct=0,int c=1)//构造函数
{
i=m;
j=n;
path_direction=direct;
number=c;
}
Maze_Path_Node(Maze_Path_Node& t)//拷贝构造函数
{
i=t.get_i();
j=t.get_j();
path_direction=t.get_path_direction();
number=t.get_number();
}
~Maze_Path_Node() //析构函数
{
}
bool operator!=(Maze_Path_Node& t)
{
if(i==t.get_i()&&j==t.get_j())//&&path_direction==t.get_path_direction()&&maze_node_passby_array[(*this).get_i()][(*this).get_j()]==maze_node_passby_array[t.get_i()][t.get_j()]
return 0;
else
return 1;
}
Maze_Path_Node& operator=(Maze_Path_Node& t)
{
if(this!=&t)
{
i=t.get_i();
j=t.get_j();
path_direction=t.get_path_direction();
number=t.get_number();
}
return *this;
}
void print_maze_path_node()
{
cout<<"("<<get_i()<<","
<<get_j()<<","
<<get_path_direction()
<<","
<<maze_node_passby_array[get_i()][get_j()]<<")"<<endl<<endl;
}
int get_i(){return i;}
int g
C++ 解决迷宫问题
最新推荐文章于 2022-12-11 14:18:32 发布
这个博客介绍了一种使用C++解决迷宫问题的方法。通过定义迷宫结构、记录路径节点以及路径类,实现了寻找从入口到出口的路径。文章包括了路径节点类和路径类的详细定义,以及相关操作如打印路径、判断回路和简化路径的函数。最终,通过示例展示了如何使用这些功能来解决迷宫问题。
摘要由CSDN通过智能技术生成