[华为机试练习题]25.圆桌游戏

题目

描述: 详细描述:N个人围坐在一个圆桌上,顺时针报数,报数的初始值为第一个人设置。当有成员报出的数字为7的倍数或数字中包含7,则该人退出圆桌,而后由下一个人开始重新继续该游戏。实现以下接口: 1、设定输入原始的圆桌游戏的人数。以最先开始报数的人编号为1,顺时针排序。2、设定第一个人的初始值,获取按照规则退出圆桌的人的编号。3、结束游戏。样例:比如初始化为4人的游戏:第1轮初始值为1,退出为3;第2轮初始值为4,退出为4号;第三轮初始值为16,退出为2号;第四轮初始值为6,退出为1号;练习阶段: 中级

代码

/*—————————————* 日期:2015-06-31* 作者:SJF0115* 题目:圆桌游戏 * 来源:华为机试练习题—————————————–*/;// 玩家数目int playerNum = 0;// 圆桌list<int> circle;// 开始玩家list<int>::iterator current;SetPlayerNum (unsigned int nPlayNum){playerNum = nPlayNum;// 初始编号for(int i = 0;i < playerNum;++i){circle.push_back(i+1);}//for// 默认开始玩家current = circle.begin();}// 判断是否被踢出局bool isOut(int num){// 7的倍数if(num % 7 == 0){return true;}(num){if(num % 10 == 7){return true;}//ifnum /= 10;}//while}GetPlayerOut (unsigned int nInitialNum){int n = nInitialNum;int index = 0;while(playerNum >= 1){if(isOut(nInitialNum)){–playerNum;list<int>::iterator next = ++current;if(next == circle.end()){next = circle.begin();}//if–current;int outNum = *current;circle.erase(current);current = next;return outNum;}//if++nInitialNum;++current;if(current == circle.end()){current = circle.begin();}//if};}GameOver(){circle.clear();playerNum = 0;current = NULL;}

,世界上那些最容易的事情中,拖延时间最不费力。

[华为机试练习题]25.圆桌游戏

相关文章:

你感兴趣的文章:

标签云: