📄 guessnumall.h
字号:
/*
* 文件名称: GuessNumAll.h
* 程序描述: 本头文件定义了决策树节点类以及生成决策树时的元素类
* 编制日期: 2003-05-28
* 程序作者: realfun
* 联系方式: rzfemail@etang.com
*/
#include <map>
#include <set>
#include <string>
/*Decision Tree Node class
每一个Node表示一个猜测
ch[4]表示游戏者的猜测
NextStep表示对每一种(0A0B-4A0B共15种)猜测aAbB,将其转换为int(a*10+b)
然后将之对应于下一个Node,如果对应的猜测以后数据集约简为空,则不计入NextStep
*/
class Node
{
public:
char m_num[4]; //0123-9876
map<int, Node*> NextStep; //猜测返回aAbB时,下一个猜测
};
/*class of creation list element
每一个Element表示分析到现在为止
*/
class Element
{
char m_num[4]; //当前节点的数
char m_dad[4]; //父节点的数
int m_level; //当前的节点的等级
set<int> remain; //剩余的可猜之数
};
//class GuessNumAll, 在构函中完成决策树(耗时),用于猜测,可打印最大猜测长度,平均长度
// 以及超出某一长度的数,或者两个长度之间的数
class GuessNumAll
{
public:
GuessNumAll(int begin = 123); //default: begin guess with 0123
~GuessNumAll();
void Guess(void);
void PrintStack(void);
//从XX开始猜,共有YY个数字猜测长度在from到to之间,它们是:...
void PrintBetween(int from = 1, int to = 8);
int MaxLen(void);
double AverLen(void);
private:
bool ConfirmAB(const char *l, const char *r, char *ab); //为提速,略去类型检查,并且做成inline
int GetABValue(const char *l, const char *r, char *ab);
void ToChar4(int value, char *ch4);
const static int m_base[5];
list<string> m_setAll;
list<string> m_setCurr;
vector<string> m_stack;
int m_times;
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -