点击打开链接

有人说这题属于栈或者队列,个人认为说集合应该比較准确点。

Problem Description

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

,以后从头開始轮流进行一至二报数、一至三报数直到剩下的人数不超过三人为止。

 

Input

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

Output

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

 

Sample Input

2
20
40
 

Sample Output

1 7 19
1 19 37

注意:

这里要注意题目说的报数一二。是指全部人中按顺序报完为后,再进行报一二三。如有:

第一次报数一二:人员:1 2 3 4 5 6 7 8 9 10

报数:1 2 1 2 1 2 1 2 1 2

第二次报数一二三:人员:1 3 5 7 9

报数: 1 2 3 1 2

如此循环上面两步。知道人员人数不超过三为止。

另一个细节就是在输出是,控制一下格式问题,最后一个后面不能有空格

代码:

import java.util.Iterator;
import java.util.LinkedList;
import java.util.Scanner; public class P1276 { public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int num;
LinkedList<Integer> list;
while(n-->0){
num=sc.nextInt();
list=new LinkedList<Integer>();
for(int i=0;i<num;i++){//向集合中加入人员
list.add(i+1);
}
// Iterator<Integer> it=queue.iterator();
// while(it.hasNext()){
// System.out.print(it.next()+" ");
// }
boolean flag=true;
while(list.size()>3){
//System.out.println(list.size());
if(flag){//控制一二和一二三模式之间互相进行
for(int i=1;i<list.size();i+=1){
// System.out.print(list.get(i)+" ");
list.remove(i);//除去喊到二的人
flag=false;
}
// System.out.println();
}else{
for(int i=2;i<list.size();i+=2){
// System.out.print(list.get(i)+" ");
list.remove(i);//除去喊到三的人
flag=true;
}
// System.out.println();
}
}
int remainNum=list.size();//必须提前把结果人数记录下来
Iterator<Integer> it=list.iterator();
int count=0;//用来控制最后一个空格问题
while(it.hasNext()){
count++;
if(count==remainNum){//这里不能用list.size(),由于在输出结果是,对应的元素已经出去了。全部size改变了
System.out.println(it.next());
}else{
System.out.print(it.next()+" ");
}
}
}
} }

最新文章

  1. 【1】springmvc4 + servlet3 零配置全注解入门项目helloword
  2. Unity3D优化总结
  3. 两轮自平衡小车双闭环PID控制设计
  4. Loadrunner:集合点(Rendezvous)
  5. Windows服务安装方法
  6. 剑指offer: 38 数字在排序数组中出现的次数
  7. Socket,非阻塞,fcntl
  8. jQuery EasyUI求助
  9. 使用FMDB,libqrencode实现二维码的生成并且保存到数据库
  10. (csdn高校俱乐部编程挑战)2的补码
  11. 用Delphi实现Windows的鼠标钩子函数
  12. windows 2003 DNS服务的重建
  13. ROS_Kinetic_x ROS栅格地图庫 Grid Map Library
  14. FFmpeg源代码简单分析:常见结构体的初始化和销毁(AVFormatContext,AVFrame等)
  15. Redis自学笔记:4.2进阶-过期时间
  16. 二层协议--MPLS协议总结
  17. php手撸轻量级开发(一)
  18. XGBoost介绍
  19. Python返回值不同格式的取值方式
  20. Solidity之mapping类型

热门文章

  1. Oracle 单表选择率
  2. 17.UNP第一章 简介
  3. HTML5+Spring-MVC实现上传图片本地保存
  4. Underscore模板的使用
  5. 坑人的SQL Server检测数字类型的函数ISNUMERIC
  6. thinkphp5-----模板中函数的使用
  7. 12 个最佳 GNOME(GTK)主题
  8. Python IDE和编辑器
  9. IOS-iOS 8 : Location Services not working(iOS 8 定位应用定位失败)
  10. HDU 2669 Romantic( 拓欧水 )