hdu1276 Java水果

士兵队列训练问题

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 4656    Accepted Submission(s): 2175

Problem Description

某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序号方向靠拢,继续从头开始进行一至二报数。。。,以后从头开始轮流进行一至二报数、一至三报数直到剩下的人数不超过三人为止。

Input

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

Output

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

Sample Input

2
20
40

Sample Output

1 7 19
1 19 37

解题思路:其实这是一个水的不能再水的题目,用两个数组交替变换值,根据题意利用数组下标把该去除的去除掉。不过博主用的是JavaArryList,毕竟ArryList不是我自己写的所以用起来就一直查API,然后各种问题,因为ArryList中的list.remove(int index)函数是把该下标元素去除,并且顺势把list改变,所以使用的时候一定需要注意这些细节,不然真的浪费时间。

代码实现:

import java.util.ArrayList;
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		ArrayList<Integer> list = new ArrayList<Integer>(); // 利用ArrayList实现排队
		int n = sc.nextInt(); // 接收下面有多少组测试数据
		while (n-- > 0) {
			int count = sc.nextInt(); // 接收有多少人排队
			// 赋值,把每个人的编号add()到链表list中
			for (int i = 1; i <= count; i++) {
				list.add(i);
			}
			boolean flag = true; //利用标记来实现两种方式的交替
			while (list.size() > 3) {
				if (flag) {
					for (int i = 1; i < list.size(); i++) {
						list.remove(i); //直接移除是2的倍数的数值
					}
					flag = false;
				} else {
					for (int j = 2; j < list.size(); j += 2) {
						list.remove(j); //直接移除是3的倍数的数值
					}
					flag = true;
				}
			}
			System.out.print(list.remove(0));//输出第一个数值
			while (!list.isEmpty()) { //每次取出第一个数值,直到list为空
				System.out.print(" " + list.remove(0));
			}
			System.out.println();
		}
	}
}

结果截图:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-09 00:37:27

hdu1276 Java水果的相关文章

JAVA 水果机游戏及编码

[转自 http://tech.it168.com/j/2007-11-07/200711070910328_1.shtml] 3.      游戏的开发与编码 在我们开发这个游戏之前,我们先讲一个这个游戏的实现所采用的方法,那就是经典的MVC模式,因为在开发游戏的时候,结构很重要,必须要理清楚每一块负责什么,每一个类负责什么,而MVC模式正好就是解决这种问题的很好的方案,我们可以把游戏的运行流程交由一个类去统一调度,游戏的呈现也就是绘图用专门一个类去负责,而绘图所需的数据可以从一个模型类里面去

设计模式(java)--简单工厂模式之女娲造人.水果农场

女娲抟土造人 话说:“天地开辟,未有人民,女娲抟土为人.”女娲需要用土造出一个个的人,但在女娲造出人之前,人的概念只存在于女娲的思想里面. 女娲造人,这就是简单工厂模式的应用.  首先,在这个造人的思想里面,有几个重要的角色:女娲本身.抽象的人的概念和女娲所造出的一个个具体的人.    1.)女娲是一个工厂类,也就是简单工厂模式的核心角色. 2.)具休的一个个的人,包括张三,李四等.这些人便是简单工厂模式里面的具体产品角色 3.)抽象的人是最早只存在于女娲的头脑里的一个想法,女娲按照这个想法造出

java游戏制作之水果忍者

水果忍者的原理很简单,主要就是采用随机的方式是画面上面出现水果. package Fruitninja; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Image; import java.util.Random; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JPanel; public class

hdu1276(士兵队列训练问题) java集合水过

点击打开链接 有人说这题属于栈或者队列,个人觉得说集合应该比较准确点. Problem Description 某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序号方向靠拢,继续从头开始进行一至二报数...,以后从头开始轮流进行一至二报数.一至三报数直到剩下的人数不超过三人为止. Input 本题有多个测试数据组,第一行为组数N,接着为N行新兵人数

HDU-1008-Elevator(Java版本+简单模拟+恶心水果)

Elevator Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 50645    Accepted Submission(s): 27932 Problem Description The highest building in our city has only one elevator. A request list is mad

深入理解Java:注解(Annotation)--注解处理器

深入理解Java:注解(Annotation)--注解处理器 如果没有用来读取注解的方法和工作,那么注解也就不会比注释更有用处了.使用注解的过程中,很重要的一部分就是创建于使用注解处理器.Java SE5扩展了反射机制的API,以帮助程序员快速的构造自定义注解处理器. 注解处理器类库(java.lang.reflect.AnnotatedElement): Java使用Annotation接口来代表程序元素前面的注解,该接口是所有Annotation类型的父接口.除此之外,Java在java.l

深入理解Java:注解(Annotation)自己定义注解入门

深入理解Java:注解(Annotation)自己定义注解入门 要深入学习注解.我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前.我们就必须要了解Java为我们提供的元注解和相关定义注解的语法. 元注解: 元注解的作用就是负责注解其它注解. Java5.0定义了4个标准的meta-annotation类型.它们被用来提供对其它 annotation类型作说明.Java5.0定义的元注解: [email protected], [email protected], [email pro

阿里巴巴java开发规范

一.编程规约 (一) 命名规约 1. [强制]所有编程相关命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束. 反例: _name / __name / $Object / name_ / name$ / Object$ 凡是以两个或一个下划线开始,后面紧跟着一个大写字母的标识符,不管它出现在哪里,都是保留给编译程序或标准库函数使用的. 此外,凡是以一个下划线开始,后面不管跟着什么内容的标识符,如果它出现在文件范围内(即它不是出现在一个函数内),那么它也是被保留的. 如果你用一个保留

Java编程思想总结笔记The first chapter

总觉得书中太啰嗦,看完总结后方便日后回忆,本想偷懒网上找别人的总结,无奈找不到好的,只好自食其力,尽量总结得最好. 第一章  对象导论 看到对象导论觉得这本书 目录: 1.1 抽象过程1.2 每个对象都有一个接口1.3 每个对象都提供服务1.4 被隐藏的具体实现1.5 复用具体实现1.6 继承1.7 伴随多态的可互换对象1.8 单根继承结构1.9 容器1.10 对象的创建和生命期1.11 异常处理:处理错误1.12 并发编程1.13 Java与Internet1.14 总结 觉得看完终于要精通J