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

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=83498#problem/C

    题意:

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

           输入行:多个测试数据组,第一行为组数N,接着为N行新兵人数,新兵人数不超过5000。

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

    案例:

           Sample Input

           2

           20

           40

           Sample Output

           1 7 19

           1 19 37

    分析:

           给士兵编号,若出列,则编号变为0,进行一次出列后进行人数检验,若不多于三人结束出列语句循环,注意输出格式控制,具体实施步骤如下:

    源代码:

     1 #include<stdio.h>
     2 const int maxm=5005;
     3 int a[maxm];
     4 int main()
     5 {
     6     int N,T,k,i,j;
     7     scanf("%d",&N);//案例数 
     8     while(N--)
     9     {
    10         scanf("%d",&T);//士兵人数
    11         k=T;
    12         for(i=1;i<=T;i++)//士兵编号
    13             a[i]=i;
    14         while(k>3)//士兵出队后人数判断语句
    15         {
    16             j=0;
    17             for(i=1;i<=T;i++)
    18             {
    19                 if(a[i]==0) continue;//判别该编号士兵是否已出列
    20                 else j++;
    21                 if(j==2)//报2士兵出列
    22                 {  a[i]=0;
    23                    j=0;
    24                 }
    25             }
    26             k-=k/2;//报2出列后剩余人数
    27             if(k<=3) break;//士兵报2出队后人数判断语句
    28             j=0;
    29             for(i=1;i<=T;i++)
    30             {
    31                 if(a[i]==0) continue;//判别该编号士兵是否已出列
    32                 else j++;
    33                 if(j==3)//报3士兵出列
    34                 {  a[i]=0;
    35                    j=0;
    36                 }
    37             }
    38             k-=k/3;//报3出列后剩余人数
    39         }
    40         for(i=1;i<=T;i++)
    41         {
    42             if(a[i]==0) continue;//判断士兵出队
    43             else //输出格式控制
    44             {   k--;
    45                 if(k>0)
    46                  printf("%d ",a[i]);
    47                 else printf("%d
    ",a[i]);
    48             }
    49         }
    50     }
    51     return 0;
    52 }
  • 相关阅读:
    将Web项目War包部署到Tomcat服务器基本步骤(完整版)
    性能实战分析-环境搭建(一)
    SQL Server Profiler追踪数据库死锁
    性能测试的各种监控工具大全
    python学习
    Linux常见面试题一
    Linux下用于查看系统当前登录用户信息的4种方法
    HDU 1394 Minimum Inversion Number(线段树求逆序对)
    SGU 180 Inversions(离散化 + 线段树求逆序对)
    Codeforces Round #FF (Div. 2) C. DZY Loves Sequences
  • 原文地址:https://www.cnblogs.com/huaszjh/p/4676058.html
Copyright © 2011-2022 走看看