⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ninegird.h

📁 八数码问题的C++程序代码。八数码问题是个典型的状态图搜索问题。搜索方式有两种基本的方式
💻 H
字号:
// NineGird.h: interface for the CNineGird class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_NINEGIRD_H__50E773E3_1675_44DC_BA9B_950747D0BC93__INCLUDED_)
#define AFX_NINEGIRD_H__50E773E3_1675_44DC_BA9B_950747D0BC93__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <time.h>
#include <vector>
#include <algorithm>
using namespace std;

#define WM_UPDATAMSG WM_USER+100 //线程通信消息

struct Node//节点状态信息
{
	DWORD dwNo;
	DWORD dwStatus;
	Node *pParents;
};

class CNineGird  
{
public:
	CNineGird();
	virtual ~CNineGird();

public:
	unsigned char m_iTargetChess[9];//目标状态
	unsigned char m_iIniChess[9];//初始状态
	CObList m_OpenList;//OPEN表
	CObList m_ClosedList;//CLOSED表
	CObList m_PathList;//搜索路径表

private:
	BOOL bIsRunning;//是否在运行状态

public:
	void CreateIniStatus(void);//产生初始状态
	BOOL SearchTargetChess(unsigned char *ini,unsigned char *target,HWND hwnd);//搜索

//private:
	bool EstimateUncoil(unsigned char *array);//目标解判定
	inline void ArrayToDword(unsigned char *array , DWORD & data);//压缩到字
	/*inline*/ void DwordToArray(DWORD data , unsigned char *array);//字解压到数组
	inline bool MoveChess(unsigned char *array , int way);//移动(算子运算)
	inline bool CompareTargetChess(unsigned char *current,unsigned char *target);//与目标状态比较
	inline bool CompareTargetChess(DWORD dwCurrent,unsigned char *target);//与目标状态比较
	inline bool FindNode_InOpenClosedList(DWORD dwNode);//在OPEN和CLOSED中查找目标节点
	inline bool FindNode_IsParents(DWORD dwStatus,Node *pNode);//当前节点在父辈节点中是否出现
};

#endif // !defined(AFX_NINEGIRD_H__50E773E3_1675_44DC_BA9B_950747D0BC93__INCLUDED_)

⌨️ 快捷键说明

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