hdu1276(士兵队列训练问题) java集合水过
有人说这题属于栈或者队列,个人认为说集合应该比較准确点。
Problem Description
,以后从头開始轮流进行一至二报数、一至三报数直到剩下的人数不超过三人为止。
Input
Output
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()+" ");
}
}
}
} }
hdu1276(士兵队列训练问题) java集合水过的更多相关文章
- hdu1276士兵队列训练问题[简单STL list]
目录 题目地址 题干 代码和解释 题目地址 hdu1276 题干 代码和解释 本题使用了STL中的list,STL的list是双向链表.它的内存空间不必连续,通过指针来进行数据的访问,高效率地在任意地 ...
- Java最重要的21个技术点和知识点之JAVA集合框架、异常类、IO
(三)Java最重要的21个技术点和知识点之JAVA集合框架.异常类.IO 写这篇文章的目的是想总结一下自己这么多年JAVA培训的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享 ...
- hdoj 1276 士兵队列训练问题【模拟】
士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ...
- (hdu step 8.1.6)士兵队列训练问题(数据结构,简单模拟——第一次每2个去掉1个,第二次每3个去掉1个.知道队伍中的人数<=3,输出剩下的人 )
题目: 士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- Java集合总结【面试题+脑图】,将知识点一网打尽!
前言 声明,本文用的是jdk1.8 花了一个星期,把Java容器核心的知识过了一遍,感觉集合已经无所畏惧了!!(哈哈哈....),现在来总结一下吧~~ 回顾目录: Collection总览 List集 ...
- java集合框架容器 java框架层级 继承图结构 集合框架的抽象类 集合框架主要实现类
本文关键词: java集合框架 框架设计理念 容器 继承层级结构 继承图 集合框架中的抽象类 主要的实现类 实现类特性 集合框架分类 集合框架并发包 并发实现类 什么是容器? 由一个或多个确 ...
- java集合框架(一):HashMap
有大半年没有写博客了,虽然一直有在看书学习,但现在回过来看读书基本都是一种知识“输入”,很多时候是水过无痕.而知识的“输出”会逼着自己去找出没有掌握或者了解不深刻的东西,你要把一个知识点表达出来,自己 ...
- 【ACM】hdu_1276_士兵队列训练问题_201308131032
士兵队列训练问题Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- HDU 1276 士兵队列训练问题(队列)
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1276 题目: 士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Othe ...
随机推荐
- luogu 3952 时间复杂度(模拟)
时间复杂度 这道题从两个月前开始做,一直没做出来,最后今晚决心一定要做出来.于是开始认真的在打草纸上写思路,最后在AC的那一刻,差点哭了出来!! 题目大意 这个自己看吧,noip2017的D1T2 s ...
- Response.Redirect(),Server.Transfer(),Server.Execute()的区别与网站优化
转 http://blog.csdn.net/dannywj1371/article/details/10213631 1.Response.Redirect():Response.Redirect方 ...
- LVS(Linux Viretual Server) 负载均衡器 + 后端服务器
##定义: LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统. ##结构: 一般来说,LVS集群采用三层结构,其主要组成部分为: A.负载调 ...
- Authrize特性登录验证
- TF基础4
模型的存储与加载 TF的API提供了两种方式来存储和加载模型: 1.生成检查点文件,扩展名.ckpt,通过在tf.train.Saver()对象上调用Saver.save()生成.包含权重和其他在程序 ...
- 5G商用时代来临!这些产业将发生变革
5G商用时代来临!这些产业将发生变革 值得注意的是,在获得工信部发放的5G网络试验频率后,三大运营商已在各大城市建设5G基站,开展5G外场测试.华为亦适时表示,已经在中国40多个城市与中国三大运营商开 ...
- node——将用户提交的数据写入data.json文件
前续 当我们在进行将数据提交到某个网页时,需要将提交数据保存下来 1.提交数据 2.获得数据 3.保存数据 先看提交数据: <!DOCTYPE html> <html lang=&q ...
- 小程序做一个能够左右滑动切换的多tab页面
主要原理:使用 <swiper> 和 <scroll-view> 组件 代码片段: https://developers.weixin.qq.com/s/mLx4FWmF757 ...
- 利用请求的JSON数据创建图形图层
先看效果图: 包含三个部分:信息窗口(标题是要素的某个属性信息,其余是感兴趣的属性信息).图上图形按照某一属性大小不一显示,图例 1.创建底图用于存放以上三部分: "esri/Map&quo ...
- CF482C Game with Strings (状压DP+期望DP)
题目大意:甲和乙玩游戏,甲给出n(n<=50)个等长的字符串(len<=20),然后甲选出其中一个字符串,乙随机询问该字符串某一位的字符(不会重复询问一个位置),求乙能确定该串是哪个字符串 ...