zoukankan      html  css  js  c++  java
  • HDU 1276

    士兵队列训练问题

    Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 2020 Accepted Submission(s): 885


    Problem Description
    某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序号方向靠拢,继续从头开始进行一至二报数。。。,以后从头开始轮流进行一至二报数、一至三报数直到剩下的人数不超过三人为止。
     
    Input
    本题有多个测试数据组,第一行为组数N,接着为N行新兵人数,新兵人数不超过5000。
     
    Output
    共有N行,分别对应输入的新兵人数,每行输出剩下的新兵最初的编号,编号之间有一个空格。
     
    Sample Input
    2 20 40
     
    Sample Output
    1 7 19 1 19 37
     1 #include <iostream>
     2 #include <cstring>
     3 using namespace std;
     4 
     5 int vis[5005];
     6 
     7 int main()
     8 {
     9      int T,i,j,k;
    10      cin>>T;
    11      int num;
    12      while(T--)
    13      {
    14           cin>>num;
    15           for(i=1;i<=num;i++)
    16                vis[i] = i;
    17           int temp = num;
    18           int cnt ;
    19           while(num>3)
    20           {
    21                cnt = 0;
    22                if(num>=2)
    23                {
    24                     for(i=1;i<=temp;i++)
    25                     {
    26                          if(vis[i])
    27                               cnt++;
    28                          if(cnt==2)
    29                          {
    30                               cnt = 0;
    31                               num--;
    32                               vis[i] = 0;
    33                          }
    34                     }
    35                }
    36                cnt = 0;
    37                if(num>3)//加上等号测试数据都过不了 
    38                {
    39                     for(i=1;i<=temp;i++)
    40                     {
    41                          if(vis[i])
    42                               cnt++;
    43                          if(cnt==3)
    44                          {
    45                               cnt = 0;
    46                               num--;
    47                               vis[i] = 0;
    48                          }
    49                     }
    50                }
    51           }
    52           cnt = 0;
    53           for(i=1;i<=temp;i++)
    54           {
    55                if(vis[i])
    56                {
    57                     cout<<vis[i];
    58                     cnt++;
    59                     if(cnt!=num)//不是temp 
    60                          cout<<" ";
    61                }
    62           }
    63           cout<<endl;
    64      }
    65      return 0;
    66 }
    67           
    68                     
    69                
    70                          
    71                
    72           
    73           
    74           
  • 相关阅读:
    水晶报表 VS2010 应用
    crystalreport使用方法
    spring MVC核心思想
    一台服务器配置多个TOMCAT
    SQL server索引
    锁机制
    JAVA书籍
    Live 直播过程
    html5 video微信浏览器视频不能自动播放
    设计模式 抽象工厂模式
  • 原文地址:https://www.cnblogs.com/hxsyl/p/2667569.html
Copyright © 2011-2022 走看看