eightdigit.h

来自「实现八数码算法」· C头文件 代码 · 共 39 行

H
39
字号
#ifndef EIGHTDIGIT_H
#define EIGHTDIGIT_H
using namespace std;
const static int targetNum[9]={1,2,3,8,0,4,7,6,5};//默认的目标状态
static int jieceng[9]={1,1,2,6,24,120,720,5040,40320};//0-8的阶层
class EightDight{
public:
	EightDight();
	/*EightDight(const EightDight &ed);*/
	EightDight(const int num[]);
	//定义空格的移动
	bool moveUp(); 
	bool moveDown();
	bool moveLeft();
	bool moveRight();

	//得到节点的评价函数值
	void getEvalue1();//W(n)
	void getEvalue2();//P(n)

	//判断是否可以到达目标状态
	bool canSolve(EightDight target);

	//重载“==”运算符,以便于只比较两个节点的数字状态而不比较parent指针
	bool operator==(const EightDight &ed);
	//获得节点的哈希值
	int hashval();
	//打印状态
	void display();
	
	void display2();

	EightDight *parent;//指向父节点
	EightDight *next;//指向下一个节点
	int EDnum[9];	
	int evalue;//评价函数值	
	int depth;//节点深度
};
#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?