📄 mc.h
字号:
//------------------------------------------------------------------------------------------------
//-------修道士野人问题的头文件 作者:申徐洲 日期:2004年5月20日 AllRightsReserve
//------------------------------------------------------------------------------------------------
#ifndef MC_H
#define MC_H
#pragma once
#include"McHead.h" // 使用结构TEightNumber TPosition TLevel
class CMissionarySavage
{
public:
CMissionarySavage(void); // 构造函数
virtual ~CMissionarySavage(void); // 虚拟析构函数
public:
bool searchByAlgorithm(void); // A*算法搜索
//bool searchByBreadth(void); // 广度优先搜索
//bool searchByDepth(void); // 深度优先搜索
bool show(CDC* pDC);
void setTimer();
TMissionarySavagePtr getResultList(void); // 获取结果链表
int getResultNum(void); // 获取结果总结点数量
int getResultDepth(void); // 获取结果深度
private:
bool isGoal(TMissionarySavagePtr pCurrent); // 判断当前结点是不是目标状态
TMissionarySavagePtr newMissionarySavage(TMissionarySavagePtr pParent, int nDirection); // 新建结点
TMissionarySavagePtr findMinCost(void); // 找出A*算法中代价最小的结点
bool findNext(TMissionarySavagePtr pCurrent, int nDirection); // 判断结点的下一个位置是否合法
void findAnswer(TMissionarySavagePtr pMissionarySavage); // 如问题有解 找出哪些结点是正解
int showPerson(CDC* pDC, int nMissionary, int nSavage, int nDispX, int nDispY);
void showPrompt(CDC* pDC);
//private:
TMcPosition m_tDirection[5]; // 修道士野人问题的搜索方向
TMissionarySavagePtr m_pHead; // 修道士野人问题的头指针
TMissionarySavagePtr m_pTail; // 修道士野人问题的尾指针
TMcLevelPtr m_pLevel; // 修道士野人问题的第N层结点数量的头指针
TMcLevelPtr m_pLevelTail; // 修道士野人问题的第N层结点数量的尾指针
int m_nTotalNum; // 修道士野人问题的总结点数
int m_nDepth; // 修道士野人问题的深度
TMissionarySavagePtr m_pCurrent; // 演示程序中的当前指针
int m_nTimer; // 演示程序中的计数器
bool m_bArriveShore; // 演示程序中船是否到达对岸
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -