searchalg.h
来自「人工智能中经典算法-宽度搜索和启发是搜索(A*算法)在VC环境下的实现代码」· C头文件 代码 · 共 45 行
H
45 行
// 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 + =
减小字号Ctrl + -
显示快捷键?