点滴记录总结,一天一打鸡血。
2015年5月华为组织了一次软件精英挑战赛,赛题是德州扑克手牌AI~
环境及测试说明:http://pan.baidu.com/s/1dD2dL0P
这一节说一些基本的功能函数,又是基本,对的,在此基础上,下一节会给点比介个复杂点的函数。说起来真是惭愧,没有像李博士、收割机之流有那么高大的算法,要说算法的话,倒是有个,rand()!!!想想研一的概率算法算是白学了,囧~~
先回忆一下基本流程,是这样:
- 向服务器注册(连接部分之前说过);
- 服务器发送座次信息,需要识别,这节不讨论;
- HOLD圈服务器发送手牌信息(2张),需要识别,在此讨论;
- 服务器发送inquire消息,不讨论;
- 手牌发送决策,不讨论;
- FLOP圈服务器发送公牌消息(3张),需要识别,在此讨论;
- 同4、5;
- TURN圈发送公牌消息(1张),需要识别,在此讨论;
- 同4、5;
- RIVER圈发送公牌消息(1张),需要识别,在此讨论;
- 同4、5。
这一节主要辨识牌型,识别牌力。于是给出了下面这些函数:
void UpdateCards (const char *recv, int flag);
void UpdateCardType (int flag);
void FlopCardType ();
void TurnCardType ();
void RiverCardType ();
int IsStraight(int card[], int start, int len);
int IsFlush(int type[],int start, int len);
int IsFour(int card[], int start, int len);
int Max(int x, int y);
上面函数不需要过多解释,名字起的好就是省事呐。
函数UpdateCa