HDOJ 士兵队列训练问题 JAVA 1276

采用了一个很笨的方法:强行模拟 

发现没有超时,可能设计的这就是标解吧...

如果有优解就更好了...

package _1276;
//不喜欢我这个方法 	感觉太笨

import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

class Node{
	int n;
	int p;
	Node(int a,int b){
		n=a;
		p=b;
	}
}

public class Main{
	
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		while((n--)!=0){
			int m = sc.nextInt();
			List q = new LinkedList();
			for (int i = 1; i <= m; i++) {
				q.add(new Node(i,i));
			}
			int t=3;
			while(q.size()>3){
				t = t==2?3:2;
				for (int i = 0; i < q.size(); i++) {
					if(q.get(i).p%t==0){
						q.get(i).p= -1;
					}
				}
				for (int i = 0; i < q.size(); i++) {
					if(q.get(i).p==-1) q.remove(i);
				}
				for (int i = 0; i < q.size(); i++) {
					q.get(i).p = i+1;
				}
			}
			for (int i = 0; i < q.size(); i++) {
				if(i==q.size()-1)
					System.out.print(q.get(i).n);
				else
					System.out.print(q.get(i).n+" ");
			}
			System.out.println();
			
		}
	}
}


你可能感兴趣的:(模拟,OJ,Test,题库-HDOJ,水题,JAVA)