博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[华为机试练习题]25.圆桌游戏
阅读量:6856 次
发布时间:2019-06-26

本文共 1963 字,大约阅读时间需要 6 分钟。

题目

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

代码

/*---------------------------------------*   日期:2015-06-31*   作者:SJF0115*   题目:圆桌游戏 *   来源:华为机试练习题-----------------------------------------*/#include 
#include
#include "oj.h"using namespace std;// 玩家数目int playerNum = 0;// 圆桌list
circle;// 开始玩家list
::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
::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;}

转载地址:http://sliyl.baihongyu.com/

你可能感兴趣的文章
基于CentOS 5.3平台下搭建PXE部署ESX&ESXi 4.x模板分发服务器 v1.0
查看>>
使用tornado模板引擎配合yaml构建nginx配置接口 [扩展saltstack]
查看>>
网络作者的心声-1、感谢读者,我不会太监
查看>>
WCF分布式开发常见错误解决(1):添加服务引用出错
查看>>
Nginx实战基础篇六 通过源码包编译安装部署LNMP搭建Discuz论坛
查看>>
如何根据指定软件版本制作属于自己的puppet yum源
查看>>
Linux下架设rsync服务器
查看>>
windows 屏幕坐标 窗口坐标 客户区坐标 逻辑坐标 设备坐标之间的关系及转换
查看>>
在Foreda8上试安装Apchehttpd-2.4.6.tar.gz
查看>>
基于S3C2410的VIVI移植
查看>>
Entity Framwork one to one problem
查看>>
[转] Attach、Detach和DeleteObject
查看>>
[转] C# 获取程序运行目录
查看>>
【OpenCV学习】极坐标变换
查看>>
使用open***构建安全***
查看>>
模仿支付宝支付密码框思路
查看>>
docker 容器的网络配置
查看>>
开源监控软件的配置:cacti,nagios
查看>>
Python多线程之threading模块
查看>>
第 6 章 单区域 OSPF
查看>>