敲七 STL队列(c++)
问题描述
有 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++)相关推荐
- 【C++】STL队列和栈的使用
C++的STL标准模板库提供了队列和栈的基本操作.下面通过两个demo分别介绍STL队列和STL栈的使用. Demo1:STL队列 [题目]卡片游戏(题目来自刘汝佳<算法竞赛入门>) 桌上 ...
- c++ stl队列初始化_声明,初始化和访问向量| C ++ STL
c++ stl队列初始化 Here, we have to declare, initialize and access a vector in C++ STL. 在这里,我们必须声明,初始化和访问C ...
- c++ stl队列初始化_创建一个向量,并将其像C ++ STL中的数组一样初始化
c++ stl队列初始化 向量是什么? (What is the vector?) Vector is a container in C++ STL, it is used to represent ...
- oracle 删除 queue,C++ stl队列Queue用法介绍:删除,插入等操作代码举例
c++队列queue模板类的定义在头文件中,queue 模板类需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque 类型. C++队列Queue是一种容 ...
- 敲7数字100以内c语言,敲七游戏数字表怎么玩?
敲七规则: 依次从某个数开始顺序数数,数到含有7或7的倍数的要拍手或其它规定的方式表示越过(比如:7.14.17.49等都不能数出),下一人继续数下面的数字.违反规则者受罚. 敲七游戏数字表(1-10 ...
- python敲七游戏代码_Python_day04_2018.7.5-(Lis列表的介绍,增删改查)
一.列表 1.列表的介绍 lst = [ ] 可以存放不同类型的数据. 2.索引和切片-------和字符串的索引切片类似. lst = ["麻花藤","王健林 ...
- STL(七)——队列queue优先队列priority_queue
一.queue 1.特点:先进先出(FIFO-first in first out) 只允许在表的前端(front,称为队头)进行删除操作,在表的后端(rear,称为队尾)进行插入操作 2.基本操作 ...
- C++的STL队列实现栈
使用C++的队列STL实现一个栈的数据结构 实现以下四个函数: 1.push(x) : 将元素x压入栈中 2.pop() : 弹出(移除)栈顶元素 3.top() : 返回栈顶元素 4.empty() ...
- RabbitMQ 七种队列模式应用场景案例分析(通俗易懂)
点击关注公众号,Java干货及时送达 作者:我思知我在 blog.csdn.net/qq_32828253/article/details/110450249 七种模式介绍与应用场景 简单模式(Hel ...
最新文章
- js html保存json,如何在json文件中存储jQuery或javascript变量?
- asp mvc @Html.CheckBox(sel,true) 往后台传值问题
- C# 线程知识--使用Task执行异步操作(转)
- 三星手机连接公司内网时需要设置EAP 方式: PEAP
- 刷机后如何升级android,手机系统怎么升级 三大方法大全【图文】
- springboot python 开发效率比较-2018年Java开发值得学习的10大技术
- QT 异步函数和同步函数交换问题
- php 枚举类型比较,PHP 枚举类型的管理与设计知识点总结
- 深入理解JDBC的超时设置
- 服务器ilo作用,iLO远程管理功能应用
- 各种hadoop原理图
- MacOS基金管理软件
- AEMDA: Inferring miRNA-disease associations based on deep autoencoder
- mtklog结构及分析
- 一个STAF的RC21的问题的解决和思考
- 神经网络正向传播步骤和反向传播
- grub2详解(翻译和整理官方手册)
- 机器人对话常用语模板_世界首个机器人观音在岛国问世,请问AI开光还会远吗?...
- 【论文】Oriented R-CNN for Object Detection
- Glyph 26426 missing from current font. matplotlib显示中文乱码解决
热门文章
- 项目经理必须知道的7种项目管理方案
- PMP 冲突管理常用的五种方法
- 最出名的网管系统服务器,向网管们推荐一款好用的网管软件
- IDEA build时提示错误信息: java: System Java Compiler was not found in classpath
- 人脸识别之人眼定位、人脸矫正、人脸尺寸标准化---Mastering OpenCV with Practical Computer Vision Projects
- PHP 判断两个字符串是否相等
- 数字逻辑代数基础——基本定理、公式与卡诺图化简法、格雷码、LSFR等
- 如何在java中产生随机数
- 页目录和页表结构---醍醐灌顶
- 设置SeekBar 滑动进度 样式