📄 searchalg.h
字号:
// SearchAlg.h: interface for the CSearchAlg class.
//
//////////////////////////////////////////////////////////////////////
#include "NodeState.h"
#include "InitDialog.h"
//#include "InputAdvDlg.h"
#if !defined(AFX_SEARCHALG_H__0B0F0FD2_7FB5_4018_9B29_EC315F3458BE__INCLUDED_)
#define AFX_SEARCHALG_H__0B0F0FD2_7FB5_4018_9B29_EC315F3458BE__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CSearchAlg
{
public:
CSearchAlg();
virtual ~CSearchAlg();
public:
List * GetResultListPoint();//得到搜索树树根的指针
BOOL LoadData(BOOL Adv=false);//载入数据
private:
int m_InitialState[3][3];//源状态保存
int m_GoalState[3][3];//目标状态保存
List m_NodeList;//用于存放搜索树的链表
protected:
BOOL FindOtherNode(int CurrentG);//回溯时在其兄弟节点中找其它的节点
void IsExisted(List *pList);//是否已经存在 如果已经存在则设标记为已存在
UINT FindBestMoveFlag(List *pList);//寻找最佳移动方式 并移动之
int Scan(int Desc,Position pos);//扫描 计算H值的辅助函数
int ComputeH(CNodeState *Item);//计算H值
void GenerateMoveFlag();//穷举空白位的移动方式
UINT GenerateChild();//生成子节点
protected:
int m_MoveFlagCount;//当前空白位可移动的步数计数
int m_CurrentG;//当前G值
BOOL m_MoveFlag[4];//移动方式表示
CNodeState *m_CurOpItem;//当前操作节点对象
};
#endif // !defined(AFX_SEARCHALG_H__0B0F0FD2_7FB5_4018_9B29_EC315F3458BE__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -