问题描述
有 N 个人在玩一种“敲7”游戏,游戏的规则是这样的:第 x个人从 t开始报数,然后按顺序报数,当某人报的数是 7 的倍数或数字中含有 7 时,便被淘汰,剩下的人继续报数,直到只剩下一个人。现求最终剩下的人编号。
输入:一行三个数字N,x,t
输出:一行一个数字表示最终剩下的人的编号
样例输入
4 3 6
样例输出
3
解决方法:
使用队列的结构体
假设输了样例中的N=4,x=3,t=6
(1)N个人编号1~N,顺序插入队列
| 1 | 2 | 3 | 4 |
(2)根据x的值重组队列,即执行x-1次 队头元素插入队尾的操作
第一次:| 2 | 3 | 4 | 1 |
第二次:| 3 | 4 | 1 | 2 |
(3)从第一个人开始报数,循环判断出队
报6,不出队,更换队头 | 3 | 4 | 1 | 2 | —> | 4 | 1 | 2 | 3 |
报7,出队 | 4 | 1 | 2 | 3 | —> | 1 | 2 | 3 |
报8,不出队,更换队头…
·
·
·
报14,出队 | 1 | 2 | 3 | —> | 2 | 3 |
·
·
·
报17,出队| 2 | 3 |—> | 3 |
完整代码

#include<bits/stdc++.h>
using namespace std;
int main(){int N,x,t,j;queue<int>q;cin>>N>>x>>t;for (int i=0;i<N;i++) q.push(i+1);   //N个人编号 for (int i=1;i<x;i++){   //根据输入的x重新组建队列中元素的顺序 q.push(q.front());q.pop();}j=t;   //j作为中间变量 while(q.size()>1){if (t%7==0){q.pop();t++;j=t;}   //是7的倍数出队 else {while(j){     if(j%10==7){q.pop();break;} else j=j/10;}   //数字中含有7出队 if(j==0){q.push(q.front());q.pop();t++;j=t;}else {t++;j=t;}   //数字中不含7,对头元素转移到队尾 }}cout<<q.front()<<endl;return 0;
}

敲七 STL队列(c++)相关推荐

  1. 【C++】STL队列和栈的使用

    C++的STL标准模板库提供了队列和栈的基本操作.下面通过两个demo分别介绍STL队列和STL栈的使用. Demo1:STL队列 [题目]卡片游戏(题目来自刘汝佳<算法竞赛入门>) 桌上 ...

  2. c++ stl队列初始化_声明,初始化和访问向量| C ++ STL

    c++ stl队列初始化 Here, we have to declare, initialize and access a vector in C++ STL. 在这里,我们必须声明,初始化和访问C ...

  3. c++ stl队列初始化_创建一个向量,并将其像C ++ STL中的数组一样初始化

    c++ stl队列初始化 向量是什么? (What is the vector?) Vector is a container in C++ STL, it is used to represent ...

  4. oracle 删除 queue,C++ stl队列Queue用法介绍:删除,插入等操作代码举例

    c++队列queue模板类的定义在头文件中,queue 模板类需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque 类型. C++队列Queue是一种容 ...

  5. 敲7数字100以内c语言,敲七游戏数字表怎么玩?

    敲七规则: 依次从某个数开始顺序数数,数到含有7或7的倍数的要拍手或其它规定的方式表示越过(比如:7.14.17.49等都不能数出),下一人继续数下面的数字.违反规则者受罚. 敲七游戏数字表(1-10 ...

  6. python敲七游戏代码_Python_day04_2018.7.5-(Lis列表的介绍,增删改查)

    一.列表 1.列表的介绍 lst = [    ]   可以存放不同类型的数据. 2.索引和切片-------和字符串的索引切片类似. lst = ["麻花藤","王健林 ...

  7. STL(七)——队列queue优先队列priority_queue

    一.queue 1.特点:先进先出(FIFO-first in first out) 只允许在表的前端(front,称为队头)进行删除操作,在表的后端(rear,称为队尾)进行插入操作 2.基本操作 ...

  8. C++的STL队列实现栈

    使用C++的队列STL实现一个栈的数据结构 实现以下四个函数: 1.push(x) : 将元素x压入栈中 2.pop() : 弹出(移除)栈顶元素 3.top() : 返回栈顶元素 4.empty() ...

  9. RabbitMQ 七种队列模式应用场景案例分析(通俗易懂)

    点击关注公众号,Java干货及时送达 作者:我思知我在 blog.csdn.net/qq_32828253/article/details/110450249 七种模式介绍与应用场景 简单模式(Hel ...

最新文章

  1. js html保存json,如何在json文件中存储jQuery或javascript变量?
  2. asp mvc @Html.CheckBox(sel,true) 往后台传值问题
  3. C# 线程知识--使用Task执行异步操作(转)
  4. 三星手机连接公司内网时需要设置EAP 方式: PEAP
  5. 刷机后如何升级android,手机系统怎么升级 三大方法大全【图文】
  6. springboot python 开发效率比较-2018年Java开发值得学习的10大技术
  7. QT 异步函数和同步函数交换问题
  8. php 枚举类型比较,PHP 枚举类型的管理与设计知识点总结
  9. 深入理解JDBC的超时设置
  10. 服务器ilo作用,iLO远程管理功能应用
  11. 各种hadoop原理图
  12. MacOS基金管理软件
  13. AEMDA: Inferring miRNA-disease associations based on deep autoencoder
  14. mtklog结构及分析
  15. 一个STAF的RC21的问题的解决和思考
  16. 神经网络正向传播步骤和反向传播
  17. grub2详解(翻译和整理官方手册)
  18. 机器人对话常用语模板_世界首个机器人观音在岛国问世,请问AI开光还会远吗?...
  19. 【论文】Oriented R-CNN for Object Detection
  20. Glyph 26426 missing from current font. matplotlib显示中文乱码解决

热门文章

  1. 项目经理必须知道的7种项目管理方案
  2. PMP 冲突管理常用的五种方法
  3. 最出名的网管系统服务器,向网管们推荐一款好用的网管软件
  4. IDEA build时提示错误信息: java: System Java Compiler was not found in classpath
  5. 人脸识别之人眼定位、人脸矫正、人脸尺寸标准化---Mastering OpenCV with Practical Computer Vision Projects
  6. PHP 判断两个字符串是否相等
  7. 数字逻辑代数基础——基本定理、公式与卡诺图化简法、格雷码、LSFR等
  8. 如何在java中产生随机数
  9. 页目录和页表结构---醍醐灌顶
  10. 设置SeekBar 滑动进度 样式