博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu1276(士兵队列训练问题) java集合水过
阅读量:4504 次
发布时间:2019-06-08

本文共 1473 字,大约阅读时间需要 4 分钟。

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

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
list; while(n-->0){ num=sc.nextInt(); list=new LinkedList
(); for(int i=0;i
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
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()+" "); } } } }}

转载于:https://www.cnblogs.com/jzssuanfa/p/6918321.html

你可能感兴趣的文章
动态规划~~矩阵链乘法
查看>>
Leetcode N-Queens II
查看>>
CodeForces 721C Journey(拓扑排序+DP)
查看>>
【概率论】3-7:多变量分布(Multivariate Distributions Part I)
查看>>
常用PY库
查看>>
排序 之 堆排序 归并排序
查看>>
linux查看修改线程默认栈空间大小(ulimit -s)
查看>>
BZOJ 1477 青蛙的约会 【扩展欧几里得】
查看>>
用phpexcelreader将excel文件读入到mysql中(转载)
查看>>
As3 Socket高低位
查看>>
15. 三数之和
查看>>
使用angular.js获取form表单中的信息
查看>>
TestNG
查看>>
高精——模板
查看>>
生成CFree 5.0 注册码
查看>>
磁力链接
查看>>
【问题解决方案】之 关于某江加密视频swf专用播放器仍无法播放的问题
查看>>
2014,码农梦想,先从态度开始!
查看>>
常用板子
查看>>
linux中安装eclipse--CnetOS6.5
查看>>