[华为机试练习题]25.圆桌游戏
2016-01-15 18:58
405 查看
题目
代码
描写叙述: 具体描写叙述: N个人围坐在一个圆桌上,顺时针报数,报数的初始值为第一个人设置。当有成员报出的数字为7的倍数或数字中包括7,则该人退出圆桌,而后由下一个人開始又一次继续该游戏。 实现下面接口: 1、设定输入原始的圆桌游戏的人数。 以最先開始报数的人编号为1,顺时针排序。 2、设定第一个人的初始值。获取依照规则退出圆桌的人的编号。 3、结束游戏。 例子: 比方初始化为4人的游戏:第1轮初始值为1。退出为3;第2轮初始值为4。退出为4号。第三轮初始值为16。退出为2号;第四轮初始值为6。退出为1号。 练习阶段: 中级
代码
/*--------------------------------------- * 日期:2015-06-31 * 作者:SJF0115 * 题目:圆桌游戏 * 来源:华为机试练习题 -----------------------------------------*/ #include <iostream> #include <list> #include "oj.h" using namespace std; // 玩家数目 int playerNum = 0; // 圆桌 list<int> circle; // 開始玩家 list<int>::iterator current; // 功能:设置玩家的个数 // 输入: unsigned int nPlayNum 玩家的个数 0 < nPlayNum < 10000; // 输出:无 // 返回:无 void 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; }//if // 包括7 while(num){ if(num % 10 == 7){ return true; }//if num /= 10; }//while } // 功能:依据nInitialNum的值,获取到依据规则下桌的人的编号 // 输入:unsigned int nInitialNum 本轮的初始值 0 < nInitialNum < 10000。 // 输出:无 // 返回:本轮退出圆桌的人的编号 unsigned int 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 }//while return 0; } // 功能:游戏结束,释放资源 // 输入:无 // 输出:无 // 返回:无 void GameOver() { circle.clear(); playerNum = 0; current = NULL; }
相关文章推荐
- 麻省理工学院公开课:计算机科学及编程导论习题1
- ios 设置富文本
- ABAP-在SMARTFORMS中取消使用WORD作为编辑器
- 面试题
- JAVA集合使用总结
- 记不住就存下来---- HTML 5 语义相关元素
- ABAP-在SMARTFORMS中取消使用WORD作为编辑器
- 头文件标准格式
- 二叉树(10)----比較两个二叉树是否同样(结构和数据),递归和非递归
- 判断JSON是否包含字段
- 安装node js+express+mongodb
- 作为一个软件工程师,在接下来的 5-10 年内应该掌握的技术
- This Handler class should be static or leaks might occur(null) 解决办法 (转)
- smartforms输出格式设置说明
- 记不住就存下来---- HTML 5 基础控件
- UML状态机图
- madplayer移植
- git 上的pull request 是什么意思?
- Echarts的option中的data问题
- Android Studio 导入 Eclipse 的代码后,注释和运行时中文显示乱码