队列简易应用
来源:互联网 发布:淘宝女装店铺头像 编辑:程序博客网 时间:2024/05/18 00:00
Problem Description
某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序号方向靠拢,继续从头开始进行一至二报数。。。,以后从头开始轮流进行一至二报数、一至三报数直到剩下的人数不超过三人为止。
Input
本题有多个测试数据组,第一行为组数N,接着为N行新兵人数,新兵人数不超过5000。
Output
共有N行,分别对应输入的新兵人数,每行输出剩下的新兵最初的编号,编号之间有一个空格。
Sample Input
22040
第一次练习队列,见笑。<pre name="code" class="cpp">#include <iostream>#include <queue>using namespace std;int left(int guy,int left_guys[5],int &num_left){ //算出guy int ji_ou_bao=1,temp; queue <int>soldier; for(int i=1;i<=guy;i++) { soldier.push(i); } while(soldier.size()>3) { temp=soldier.size(); if(ji_ou_bao%2==1) { for(int j=1;j<=temp;j++) { if(j%2==0) { soldier.pop(); } else { soldier.push(soldier.front()); soldier.pop(); } } } else { for(int j=1;j<=temp;j++) { if(j%3==0) { soldier.pop(); } else { soldier.push(soldier.front()); soldier.pop(); } } } ji_ou_bao++; } ji_ou_bao=0; //充当一般常数 num_left=soldier.size(); while(!soldier.empty()) { left_guys[ji_ou_bao]=soldier.front(); soldier.pop(); ji_ou_bao++; }}int main(){ int n,guys[20],left_guys[5],num_left; cin>>n; for(int i=0;i<n;i++)cin>>guys[i]; //carry out the function(guys[i],left_guys,num_left); for(int i=0;i<n;i++) { left(guys[i],left_guys,num_left); for(int j=0;j<num_left;j++) { cout<<left_guys[j]<<" "; } cout<<endl; }}
0 0
- 队列简易应用
- 一个简易的线性队列
- 队列的简易链实现
- LinkedList实现队列简易版
- 队列应用
- Android应用---简易计算器
- Notification 的简易应用
- 单片机中使用简易指令队列
- 环形无锁队列的简易实现
- 灰常简易的顺序队列
- Unity之简易任务队列TaskQueue
- delayQueue延时队列-模拟简易MQ
- 数据结构--循环队列(简易)--C
- 队列的应用:优先队列
- 一维数组简易应用
- C++应用:简易五子棋游戏
- 简易计算器之ButterKnife应用
- 简易计算器之Stack应用
- 周报(第七周)
- csu(背包的变形题)
- android系统移植之iMX53按键驱动篇
- CSDN第一篇
- DM642图像处理程序的主要结构
- 队列简易应用
- 矩阵翻硬币 蓝桥杯
- 【leetcode】Simplify Path
- windows简单窗口程序
- 用SAX来解析XML
- 是String,StringBuffer还是StringBuilder?
- oracle分析函数Rank, Dense_rank, row_number
- Rails开发中使用的VIM插件
- GCD 深入理解:第二部分