题目描述:
某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序号方向靠拢,继续从头开始进行一至二报数。。。,以后从头开始轮流进行一至二报数、一至三报数直到剩下的人数不超过三人为止。
输入:
本题有多个测试数据组,第一行为组数N,接着为N行新兵人数,新兵人数不超过5000。

输出:
共有N行,分别对应输入的新兵人数,每行输出剩下的新兵最初的编号,编号之间有一个空格。

样例输入:
2
20
40
样例输出:
1 7 19
1 19 37

思路:利用两个队列实现,q1队列用来从一至二报数,非2的进入q2,;q2用来从一至三报数,非3的进入队列q1,直至两个队列中任意一个队列元素数小于等于3。其中用到bool变量来决定哪个队列元素出队,哪个队列元素如队。需要注意的是每次一个队列出队完成后都要重新初始化,否则将会有你意想不到的错误(本人亲测)。一下就是具体的源码:

#include <iostream>
#define MAXSIZE 5001
using namespace std;typedef struct queue
{int data[MAXSIZE];int front;int rear;int capacity;
}Queue;
void InitQueue(Queue *q)
{q->front=0;q->rear=0;q->capacity=0;
}
void EnterQueue(Queue *q,int &data)
{if(MAXSIZE!=q->rear){q->data[++q->rear]=data;q->capacity++;}
}
int OuterQueue(Queue *q)
{int data;if(q->front!=q->rear){data=q->data[++q->front];q->capacity--;}return data;
}
int main()
{int N,m,data,m1,m2;Queue q1,q2;cin>>N;while(N--){InitQueue(&q1);InitQueue(&q2);bool isq1=true;cin>>m;for(int i=1;i<=m;i++)EnterQueue(&q1,i);while(q1.capacity>3||q2.capacity>3){if(isq1){m1=q1.capacity;for(int i=1;i<=m1;i++){if(i%2!=0){data=OuterQueue(&q1);EnterQueue(&q2,data);}elseOuterQueue(&q1);}isq1=false;InitQueue(&q1);}else{m2=q2.capacity;for(int i=1;i<=m2;i++){if(i%3!=0){data=OuterQueue(&q2);EnterQueue(&q1,data);}elseOuterQueue(&q2);}isq1=true;InitQueue(&q2);}}if(isq1){cout<<q1.data[1];for(int i=2;i<=q1.capacity;i++)cout<<" "<<q1.data[i];cout<<endl;}else{cout<<q2.data[1];for(int i=2;i<=q2.capacity;i++)cout<<" "<<q2.data[i];cout<<endl;}}return 0;
}

士兵队列训练问题:某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的相关推荐

  1. 第 13 周 / 编程题 - 新兵队列训练(选做)

    某部队进行新兵队列训练,将新兵从1开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始1至2报数,凡报到2的出列,剩下的向小序号方向靠拢,再从头开始进行1至3报数,凡报到3的出列,剩下的向小序 ...

  2. 新兵队列训练C++(简单实现)

    题目:某部队进行新兵队列训练,将新兵从1开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始1至2报数,凡报到2的出列,剩下的向小序号方向靠拢,再从头开始进行1至3报数,凡报到3的出列,剩下的 ...

  3. python约瑟夫环问题给十个学生编号报到3者出列_趣味算法--约瑟夫环问题(示例代码)...

    问题描述 已知n个人(以编号1,2,3,...,n分别表示)围坐在一张圆桌上.指定编号为k的人开始从1报数,数到m的那个人出列:出列那个人的下一位又从1开始报数,数到m的那个人出列:以此规则重复下去, ...

  4. 微信生成带参数的二维码,合成海报,扫码后推送小程序?

    微信服务号渠道二维码功能,支持生成带参数二维码,合成海报二维码,微信扫码后推送内容:结合微号帮平台48小时信息推送,推送微信小程序. 带参二维码 海报二维码 微信扫码后回复 48小时信息推送 在微号帮 ...

  5. 微信小程序获取二维码接口整理,.Net Core后台获取小程序二维码

    2019独角兽企业重金招聘Python工程师标准>>> 一.关于二维码接口说明 参考:https://my.oschina.net/tianma3798/blog/1811307 获 ...

  6. QGIS二次开发地图添加标记添加注记Svg小图标SvgItem

    QGIS二次开发地图添加标记添加注记Svg小图标 即QgsAnnotationLayer.QgsMarkerSymbol和QgsAnnotationMarkerItem的用法,我把QGIS3.20软件 ...

  7. 长春理工大学计算机考研专业课139,数二98,英二52,。上岸经验分享

    文章目录 1 数学 2 英语 3 政治 4 专业课 5 补充 6 赠人玫瑰,手有余香 很高兴能作为一个上岸的考生跟大家分享一下我的上岸经验,分数不高还希望能给大家一些帮助 我是计专的,数二98,英二5 ...

  8. 决策树算法模型的归类与整理(ID3&C4.5&CART&线性二分类&非线性二分类)

    决策树算法模型的归类与整理(ID3&C4.5&CART&线性二分类&非线性二分类) 一. 总结摘要 决策树模型在监督学习中非常常见,可用于分类(二分类.多分类)和回归. ...

  9. 【C语言进阶深度学习记录】三十 二维数组与二维指针

    文章目录 1 二维指针(指向指针的指针) 2 二维数组 3 二维数组的类型 3.2 如何动态申请二维数组 4 总结 1 二维指针(指向指针的指针) 指针的本质是变量 指针的指针是保存指针变量的地址.如 ...

最新文章

  1. 阻止路由跳转得方式_vue路由拦截及页面跳转的设置方法
  2. java ubuntu 14.04,Ubuntu 14.04安装java的方法
  3. SpringBoot-04:SpringBoot在idea中的俩种创建方式
  4. Yahoo 拒绝 Microsoft 的收购请求
  5. AXMLPrinter2.jar反编译xml文件
  6. linux下scp命令详解
  7. 基本的Socket通信
  8. linux shell之xargs 、tr、sha1sum、head、tail一般使用
  9. 移动前端webApp开发点滴积累20140524
  10. Q109:用PBRT渲染Blender导出的模型(3)
  11. 新书出版 |《数据库程序员面试笔试真题库》
  12. 论文查重 降重复度?如何进行毕业论文查重--总结贴
  13. 电脑各个硬件的理论知识 经典
  14. springboot整合H+,基于summernote的富文本编辑器图片上传
  15. 大家小心 日本公司淘宝天猫阿里巴巴行为异常 我购买的业务已经被关闭
  16. php slik转wav_silk转mp3(小程序音频silk转普通mp3接口)
  17. 怎样教四岁的孩子学画画
  18. 解决Warning: NEWFF used in an obsolete way. See help for NEWFF to update calls to the new argument li
  19. 华为hcie认证体系华为华为hcie认证价值NSR不间断路由思科华为网工常备知识点解析ie-lab
  20. Github 之删除文件或者文件夹(不影响本地文件,只删除远端的指定文件或者文件夹) 操作

热门文章

  1. 打破设备和局域网的限制,爱奇艺万能联播-上线云投屏
  2. iso格式的Office2007下载安装
  3. 记录elmoformanylangs安装
  4. STM32 FOC BLDC 无刷电机 控制开发板资料 视频教程 例程 FOC库
  5. layui学习笔记(五)关于layui按钮下拉菜单dropdown使用。研究dropdown数据提取、显示过长、样式显示问题。
  6. 2017第三十三届湖北(武汉)国际先进医疗仪器设备展览会会刊(参展商名录)
  7. 这几个CNAD领域对实验人员的要求,赶紧收藏
  8. 硬币分拣机控制系统c语言,基于硬币分拣包装机的DSP控制系统设计.pdf
  9. 12306验证码识别 的结果记录
  10. android ble配对绑定,Android蓝牙(一)搜索配对和绑定