zoukankan      html  css  js  c++  java
  • 士兵队列训练问题

                           士兵队列训练问题

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

    Input

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

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

    Sample Input

    2
    20
    40

    Sample Output1 7 19

     1 7 19

      1 19 37

    本题的思路比较简单,解法有很多种,可用队列数组,等等,

    但是本题的坑也比较多,首先,如果人数小于3的话,直接输出全部就行了;其次,如果大于3不一定一定要输出3个,将士兵遍历完,如果士兵的个数小于或者等于3就输出。

    代码:

     1 #include<stdio.h>
     2 #include<vector>
     3 #include<iostream>
     4 using namespace std;
     5 int n,m;
     6 vector<int> q;
     7 int main(){
     8     freopen("in.txt","r",stdin);
     9     scanf("%d",&n);
    10     while(n--){
    11         q.clear();
    12         scanf("%d",&m);
    13         for(int i=1;i<=m;i++){
    14             q.push_back(i);
    15         }
    16         if(m<=3){   
    17             for(int i=0;i<q.size();i++){
    18                 printf("%d%c",q[i],i==q.size()-1?'
    ':' ');
    19             }
    20         }
    21         else{
    22             while(1){
    23                 for(int i=1;i<q.size();i++){
    24                     q.erase(q.begin()+i);
    25                    // if(q.size()==3) break;
    26                 }
    27                 if(q.size()<=3)  break;
    28                 for(int i=2;i<q.size();i=i+2){
    29                     q.erase(q.begin()+i);
    30                    // if(q.size()==3) break;
    31                 }
    32                 if(q.size()<=3) break;
    33             }
    34             for(int i=0;i<q.size();i++){
    35                 printf("%d%c",q[i],i==q.size()-1?'
    ':' ');
    36             }
    37         }
    38     }
    39 }
  • 相关阅读:
    案例20:地下汽车库消防设施配置案例分析
    jsonp 跨域
    Cookie 工具类
    spring md5 加密
    sso 登录业务逻辑
    maven tomcat 插件
    <url-pattern>/</url-pattern> 拦截请求
    sso 系统分析
    FreeMarker 页面静态化解决方案
    FreeMarker 整合 springmvc
  • 原文地址:https://www.cnblogs.com/muziqiu/p/7278682.html
Copyright © 2011-2022 走看看