C++数据结构大作业之用并查集随机生成迷宫及深搜深宫路径

头文件Maze.h

#include
#include 
#ifndef MAZE_H
#define MAZE_H
const char resultSymbol = '#';
const char wallSymbolH = '-';
const char wallSymbolV = '|';
const char wallCorner = '+';
const char roomSymbol = ' ';

class Maze
{
public:
	char **maze;   //迷宫动态二维数组
	int row;       //迷宫动态二维数组一行的长度
	int column;    //迷宫动态二维数组一列的长度
	int *unionFindSet;  //生成迷宫用的并查集
	int UFSLength;      //并查集的长度,也是房间的总个数

	Maze(int row, int column);		   //构造函数

	~Maze();                           //析构函数

	void initMaze(int row, int column, char**& maze);  //初始化迷宫

	void makeMaze(char**& maze);                       //随机首先迷宫

	void solveMaze(char**& maze);                      //解决迷宫

	void solveMazeSecond(char**& maze);                     //解决迷宫

	int DFAlgorithm(char**& maze, int i, int j, char& step);    //深搜算法用于生成的搜索步骤

	int DFAlgorithmSecond(char**& maze, int i, int j, char& step);  //深搜算法用于生成第二个迷宫的解法

	void initUnionFindSet(int*& unionFindSet);         //初始化并查集

	int mazeAdapter(int i_column, int j_row);          //把二维数组“房间”下标转为适合并查集的下标

	int findSet(int x);                                //并查集:查找集合

	void uionSet(int x, int y);                        //并查集:合并集合

	bool isJioned(int x, int y);                       //判断两个集合(元素、点)是否连通

	void printMaze(char** maze);                       //打印迷宫

	void printOriginalMaze();              //打印原始迷宫

	void printResultOfMaze();              //打印迷宫走法

	void printStepOfMaze();                //打印迷宫步骤

	void printUnionFindSet();              //打印并查集

	void reStore(char**& maze);            //恢复原始迷宫

	static void test();                           //用于测试迷宫算法
};

#endif

  函数实现文件Maze.cpp

#include "Maze.h"
using namespace std;

Maze::Maze(int pRow, int pColumn)
{
	row = 2*pRow + 1;
	column = 2*pColumn + 1;
	UFSLength = pRow * pColumn;
	initMaze(pRow, pColumn, maze);
	initUnionFindSet(unionFindSet);

	makeMaze(maze);
	cout<<"迷宫矩阵初始化完成"<>row)
	{
		if (row < 1)
			cout<<"输入错误,请重新输入想要挑战的迷宫的宽度:"<>column)
	{
		if (column < 1)
			cout<<"输入错误,请重新输入想要挑战的迷宫的高度:"<printOriginalMaze();

	cout<printResultOfMaze();
	cout<printStepOfMaze();

}

  最后一个是main.cpp

#include "Maze.h"
using namespace std;

int main()
{
	Maze::test();

	return 0;
}

  

转载于:https://www.cnblogs.com/daocaowu/p/3145813.html

你可能感兴趣的:(C++数据结构大作业之用并查集随机生成迷宫及深搜深宫路径)