A - 士兵队列训练问题

Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u

Submit Status

Description

某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序号方向靠拢,继续从头开始进行一至二报数。。。,以后从头开始轮流进行一至二报数、一至三报数直到剩下的人数不超过三人为止。 
 

Input

本题有多个测试数据组,第一行为组数N,接着为N行新兵人数,新兵人数不超过5000。 
 

Output

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

Sample Input

2 20 40
 

Sample Output

1 7 19 1 19 37
 
//这道题我的想法是用模拟的办法解决的,用一个数组保存 位置[]上人的编号,然后根据命令,报2,3的位置 位置[] 等于0,然后将 位置[] 不为0的往最前面靠,形成一个新的列。
 
  1. #include <iostream>
  2. #include <string.h>
  3. using namespace std;
  4.  
  5. int people[];
  6.  
  7. int er()
  8. {
  9. int i,j;
  10. for (i=;i<=;i++)
  11. {
  12. if (people[i]==&&people[i+]==)
  13. return ;//完成
  14. if (i%!=)
  15. {
  16. for (j=;j<i;j++)
  17. {
  18. if(people[j]==)
  19. {
  20. break;
  21. }
  22. }
  23. if (j!=i)
  24. {
  25. people[j]=people[i];
  26. people[i]=;
  27. }
  28.  
  29. }
  30. else if (i%==)
  31. {
  32. people[i]=;
  33. }
  34. }
  35. return ;
  36. }
  37.  
  38. int san()
  39. {
  40. int i,j;
  41. for (i=;i<=;i++)
  42. {
  43. if (people[i]==&&people[i+]==)
  44. return ;//完成
  45. if (i%!=)
  46. {
  47. for (j=;j<i;j++)
  48. {
  49. if(people[j]==)
  50. {
  51. break;
  52. }
  53. }
  54. if (j!=i)
  55. {
  56. people[j]=people[i];
  57. people[i]=;
  58. }
  59.  
  60. }
  61. else if (i%==)
  62. {
  63. people[i]=;
  64. }
  65. }
  66. return ;
  67. }
  68.  
  69. int main()
  70. {
  71. int m,n,i;
  72. cin>>n;
  73. while (n--)
  74. {
  75. memset(people,,sizeof(int)*);
  76. cin>>m;
  77. for (i=;i<=m;i++)
  78. people[i]=i;//数据是编号
  79. if (m>)//小于3的话去判断就不符合题意了
  80. {
  81. for (i=;i<=m;i++)
  82. {
  83. if (i%==)
  84. {
  85. er();
  86. if (people[]==) break;
  87. }
  88. else if (i%==)
  89. {
  90. san();
  91. if (people[]==) break;
  92. }
  93. }
  94. }
  95. for (i=;i<=;i++)
  96. {
  97. if (people[i]!=)
  98. {
  99. if (i!=) cout<<" ";
  100. cout<<people[i];
  101. }
  102. }
  103. cout<<endl;
  104. }
  105. return ;
  106. }
 

A - 士兵队列训练问题的更多相关文章

  1. hdoj 1276 士兵队列训练问题【模拟】

    士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  2. (hdu step 8.1.6)士兵队列训练问题(数据结构,简单模拟——第一次每2个去掉1个,第二次每3个去掉1个.知道队伍中的人数&lt;=3,输出剩下的人 )

    题目: 士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...

  3. 【ACM】hdu_1276_士兵队列训练问题_201308131032

    士兵队列训练问题Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  4. HDU 1276 士兵队列训练问题(队列)

    题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1276 题目: 士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Othe ...

  5. HDU 1276 士兵队列训练问题(模拟)

    原题代号:HDU 1276 原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1276 题目原题: 士兵队列训练问题 Time Limit: 2000/10 ...

  6. 暑假集训(1)第一弹 -----士兵队列训练问题(Hdu1276)

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

  7. HDU1276(士兵队列训练模拟与链表)

    HDU1276 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u   Descripti ...

  8. 2016HUAS_ACM暑假集训1A - 士兵队列训练问题

    这道题我觉得是个简单的模拟题,整理一下思路,弄清楚题意就好了. 新手上路,采用两个数组进行交互赋值,用的方法也比较笨,思路差不多都在代码的注释里了. 下面是题目大意: 首先将士兵从1开始编号(士兵总数 ...

  9. 解题报告:hdu 1276 士兵队列训练问题 - 简单题

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

随机推荐

  1. Java 多线程之 synchronized 和 volatile 的比較

    概述 在做多线程并发处理时,常常须要对资源进行可见性訪问和相互排斥同步操作.有时候,我们可能从前辈那里得知我们须要对资源进行 volatile 或是 synchronized 关键字修饰处理.但是,我 ...

  2. Java8 对多个异步任务进行流水线操作(笔记)

    现在我们要对商店商品进行折扣服务.每个折扣代码对应不同的折扣率,使用一个枚举变量Discount.Code来实现这一想法,具体代码如下所示. 以枚举类型定义的折扣代码 /** * 折扣服务api * ...

  3. javascript - 你不容错过的es6模板写法

    /** * ``即重音符(128键盘左上角ESC下面那个键盘) * 隶属:模板字符串 */ let unit = '4'; let keywords = 'uc'; // step1:模板变量 ${v ...

  4. 04-常见内存错误以及valgrind使用

    04-常见内存错误以及valgrind使用 代码段: 仅仅读数据,因此对这一部分的数据.试图写仅仅读数据,这个在编译的时候基本上能够检測. 数据段/BSS段: 未初始化直接訪问,即使没有显示初始化,仍 ...

  5. JavaScript 创建对象的几种模式

    在JavaScript中虽说可以用Object的构造函数或者字面量创建单个对象,但是用这些方式来创建多个对象时就有一个明显的缺点,产生了大量的重复代码.为解决这些问题,许多模式就应运而生. 1. 工厂 ...

  6. Template design pattern application in android

    The template method allow separate the generic method from a detail context(class) via inheritance A ...

  7. BIEE-CSS样式大全

    字体属性:(font) 大小 {font-size: x-large;}(特大) xx-small;(极小) 一般中文用不到,只要用数值就可以,单位:PX.PD 样式 {font-style: obl ...

  8. Android创建JSON格式数据

    Android创建JSON格式数据 作为上一篇博客的补充,简单那解说了一下Android创建JSON格式数据的小Demo. 1. 创建JSON格式数据 对于Android创建JSON格式数据.因为An ...

  9. mybatis+oracle的批量插入

    // 批量插入,手动控制事务 SqlSession batchSqlSession = null; try { batchSqlSession = sqlSessionTemplate.getSqlS ...

  10. 经过Nginx代理后如何区分HTTP请求头中的X-Forwarded-For和X-Real-IP,以及Java示例

    在开发工作中,我们常常需要获取客户端的IP.一般获取客户端的IP地址的方法是:request.getRemoteAddr();但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实 ...