ccf 火车购票
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner; public class Main2 { public static void main(String[] args) {
// TODO Auto-generated method stub
List<int[]> lt = new ArrayList<int[]>();
Scanner input = new Scanner(System.in);
int count = input.nextInt();
int[] buy = new int[count];
for(int i =0;i < count;i++){
buy[i] = input.nextInt(); }
for(int j = 0;j < 20;j++){
int[] arr = {j,5};
lt.add(arr);
} for(int i =0;i<count;i++){ for(int j =0; j < lt.size();j++){ if(buy[i] <= lt.get(j)[1]){
int index = lt.get(j)[0];
int bianhao = lt.get(j)[1];
for(int k = 1;k<=buy[i];k++){
System.out.print(index*5 + 5 - bianhao+k + " ");
}
bianhao -= buy[i];
if(bianhao==0){
lt.remove(j);
break;
}else{
int[] arr = {index,bianhao};
lt.set(j, arr);
break;
}
}else if(j == lt.size()-1){ for(int k =0;k < lt.size();k++){
int index = lt.get(k)[0];
int bianhao = lt.get(k)[1];
while(buy[i]!=0&&bianhao!=0){
buy[i]--;
System.out.print(index*5 + 5 - bianhao + 1 + " ");
bianhao--;
}
if(bianhao==0&&buy[i] !=0){
lt.remove(k);
k--;
continue;
}
if(buy[i] ==0){
if(bianhao==0){
lt.remove(k); }
break;
} }
}
} System.out.println();
} } }
这道题的思路我的思路是如何?构建个集合lt存放座位,每次购票的行为的时候,
都会遍历这个集合,如果集合中的某个元素的座位变为0,即是卖完了,则把它从集合中删除掉。这里面有个重点就是当座位不能连在一起买的时候,就需要分开买,
因此需要一个else if来判断是否遍历完了,都还没有买到票,进而进入分散买票。

这个是我的测试结果。
ccf 火车购票的更多相关文章
- CCF|火车购票|Java|80分
import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Sc ...
- CCF CSP 201609-2 火车购票
题目链接:http://118.190.20.162/view.page?gpid=T46 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排 ...
- CCF 2016-09-2 火车购票
CCF 2016-09-2 火车购票 题目 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排5个座位.为方便起见,我们用1到100来给所有的 ...
- 火车购票问题(16年ccf)
火车购票问题(16年ccf) 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排5个座位.为方便起见,我们用1到100来给所有的座位编号,第一 ...
- CCF201609-2 火车购票 java(100分)
试题编号: 201609-2 试题名称: 火车购票 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一 ...
- CCF 201612-2 火车购票 (暴力)
问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排5个座位.为方便起见,我们用1到100来给所有的座位编号,第一排是1到5号,第二排是6到10 ...
- CSP201609-2:火车购票
引言:CSP(http://www.cspro.org/lead/application/ccf/login.jsp)是由中国计算机学会(CCF)发起的"计算机职业资格认证"考试, ...
- 【刷题笔记】火车购票-----java方案
问题描述请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排5个座位.为方便起见,我们用1到100来给所有的座位编号,第一排是1到5号,第二排是6到10号 ...
- CCF2016092火车购票
问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排5个座位.为方便起见,我们用1到100来给所有的座位编号,第一排是1到5号,第二排是6到10 ...
随机推荐
- win10 uwp 改变鼠标
经常在应用需要修改光标,显示点击.显示输入,但是有些元素不是系统的,那么如何设置鼠标? 本文主要:UWP 设置光标,UWP 移动鼠标 设置光标 需要写一点代码来让程序比较容易看到,什么光标对于什么. ...
- STM32外部中断线编程
#include "ExtiConfig.h" unsigned char key1Down = 0; unsigned char key2Down = 0; /********* ...
- 各大公司Java后端开发面试题总结
ThreadLocal(线程变量副本)Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量.采用空间换时间,它用于线程间的数据隔离,为每一个使用该变量的线程提供一个副 ...
- LINUX 笔记-mv命令
常用参数: -f :force强制的意思,如果目标文件已经存在,不会询问而直接覆盖 -i :若目标文件已经存在,就会询问是否覆盖 -u :若目标文件已经存在,且比目标文件新,才会更新
- 【ASP.NET MVC 学习笔记】- 20 ASP.NET Web API
本文参考:http://www.cnblogs.com/willick/p/3441432.html 1.ASP.NET Web API(本文简称Web API),是基于ASP.NET平台构建REST ...
- QQ顶部的消息,联系人切换
高仿ios SegmentView 以前做过的一个项目美工设计的页面包含这个控件,和QQ消息页面顶部的效果一样,其实,这个控件是ios7的分段控制,android没有这个控件,不过实现起来也比较简单, ...
- tp5上传图片添加永久素材到微信公众号
$file = request()->file('image');if(!$file){ $res['status'] = false; $res['msg'] = '必须上传文件'; retu ...
- 树莓派.GPRS.短信接收器
起因 曾经用过西门子出的短信猫, 好处是直接有SDK开发包, 不会硬件开发也能直接使用 缺点也是明显的, 就是只支持Windows系统, 另外就是在Windows下工作很不稳定, 隔开几天就会出现收不 ...
- LeetCode 437. Path Sum III (路径之和之三)
You are given a binary tree in which each node contains an integer value. Find the number of paths t ...
- Quartz.NET的使用(附源码)
简介 虽然Quartz.NET被园子里的大神们写烂了,自己还是整理了一篇,结尾会附上源码地址. Quartz.NET是一款功能齐全的开源作业调度框架,小至的应用程序,大到企业系统都可以适用.Quart ...