zoukankan      html  css  js  c++  java
  • hdu1276(士兵队列训练问题) java集合水过

    点击打开链接

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

    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()+" ");
    				}
    			}
    		}
    	}
    
    }
    




  • 相关阅读:
    Vue-router2.0学习笔记(转)
    vue-cli 搭建项目
    打开一个vue项目
    Webpack,Browserify和Gulp三者之间到底是怎样的关系
    读取ByteBuffer有效的数据
    node-sass 安装失败的解决措施[转]
    SpringCloud2.0
    Docker
    分布式文件系统之FastDFS
    SVN的使用
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/6918321.html
Copyright © 2011-2022 走看看