试题编号: | 201609-2 |
试题名称: | 火车购票 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: |
问题描述
请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配。
假设一节车厢有20排、每一排5个座位。为方便起见,我们用1到100来给所有的座位编号,第一排是1到5号,第二排是6到10号,依次类推,第20排是96到100号。 购票时,一个人可能购一张或多张票,最多不超过5张。如果这几张票可以安排在同一排编号相邻的座位,则应该安排在编号最小的相邻座位。否则应该安排在编号最小的几个空座位中(不考虑是否相邻)。 假设初始时车票全部未被购买,现在给了一些购票指令,请你处理这些指令。
输入格式
输入的第一行包含一个整数
n,表示购票指令的数量。
第二行包含 n个整数,每个整数 p在1到5之间,表示要购入的票数,相邻的两个数之间使用一个空格分隔。
输出格式
输出
n行,每行对应一条指令的处理结果。
对于购票指令 p,输出 p张车票的编号,按从小到大排序。
样例输入
4
2 5 4 2
样例输出
1 2
6 7 8 9 10 11 12 13 14 3 4
样例说明
1) 购2张票,得到座位1、2。
2) 购5张票,得到座位6至10。 3) 购4张票,得到座位11至14。 4) 购2张票,得到座位3、4。
评测用例规模与约定
对于所有评测用例,1 ≤
n ≤ 100,所有购票数量之和不超过100。
|
解题的代码如下:
import java.util.Scanner;
/*
* 火车购票
*/
public class Main {
public static int[][] s;//存储每节车厢的座位
public static int[] e;//存储车厢座位每排剩余的座位
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
s = new int[20][5];//0表示座位为空
int n = scanner.nextInt();//购买指令的数量,不超过5张
int[] p = new int[n];//存储每次购买的票数
for(int i=0;i<n;i++){
p[i]=scanner.nextInt();
}
e = has_empty(s);//求得每排空座位的数量存到数组e中。数组e的下标和数组s的行坐标,即e[i]存的数为s中第i排剩余座位
for(int i=0;i<n;i++){
for(int j=0;j<20;j++){
if(p[i]<=e[j]){ //找到一排空座位数大于等于购买的票数
buy(p[i], j);
output();//输出本次购买的结果
System.out.println();
e=has_empty(s);//每次购买一次票后就得更新e中存储的没排空座位数
break;
}
if(p[i]>e[j]&&j==19){//20 排座位中每排空座位数都比购买的票数少
buy_left(p[i]);//将票按顺序分配到从第一排开始的空座位
output();
System.out.println();
e=has_empty(s);
break;
}
}
}
}
/*
* 20排座位中每排空座位数都比购买的票数少,调用该函数
*/
public static void buy_left(int sum){
//按顺序搜索每个座位,是空座位就分配给购买的票
for(int i=0;i<20;i++){
for(int j=0;j<5;j++){
if(s[i][j]==0&&sum>0){
s[i][j]=1;
sum--;
}
}
}
}
/*
* 分配座位
*/
public static void buy(int x,int y){
//将s中第y排座位中空座位分配
for(int i=0;i<5;i++){
if(s[y][i]==0){
s[y][i]=1;//1表示该座位已分配
x--;
}
if(x==0){//分配完所有票数,退出
break;
}
}
}
/*
* 检索每一排座位数
*/
public static int[] has_empty(int[][] s){
int e[] = new int[20];
for(int i=0;i<20;i++){
for(int j=0;j<5;j++){
if(s[i][j]==0)
e[i]++;
}
}
return e;
}
/*
* 输出每次购买结果
*/
public static void output(){
for(int i=0;i<20;i++){
for(int j=0;j<5;j++){
if(s[i][j]==1){
System.out.print((5*i+j+1)+" ");//将i行j列座位换算成实际中第几个座位,并输出
s[i][j]=2;//已经输出的座位号标记为2,否则每次购买完票调用该函数,会再次将之前购买好的座位号输出
}
}
}
}
}
文章浏览阅读3.4k次。静态的类或者方法只能访问静态成员!_内部类可以引用它的包含类(外部类)的成员吗?有没有什么限制
文章浏览阅读889次。@Resource(JSR-250标准注解,推荐使用它来代替Spring专有的@Autowired注解) Spring 不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource、@PostConstruct以及@PreDestroy。 @Resource的作用相当于@Autowired,只不过@A_spring如何使用annotation注册的resource实现类
文章浏览阅读1.6k次。通过STM32CubeMx很容易生成测试代码在左侧Connectivity中选择USART,USB_OTG_FS在Middleware中选择USB_DEVICE,在USB_DEVICE Mode中Class For FS IP下拉框中选择Communication Device Class(Virtural Port Com)如果需要利用Cubemx生成的代码进行移植:1.文件需要 1.Middlewares\ST\STM32_USB_Device_Library..._h750 usb通讯
文章浏览阅读261次。figure元素figure是个组合元素,可以带标题figcaption,一个figure只允许放置一个figcaption。<figure><img src="logo.png" alt="图片"><figcaption>标志</figcaption></figure>details元素:dtails提供了一种替代Javascript的、将画面上局部区域进行展开或收缩的方法.<details><summary_low定义度量的值位于
文章浏览阅读368次。原标题:卓景京干货丨SpringMVC利用@CrossOrigin注解解决ajax跨域1. 什么是跨域跨域,即跨站HTTP请求(Cross-site HTTP request),指发起请求的资源所在域不同于请求指向资源所在域的HTTP请求。当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域当前页面url被请求页面url是否跨域原因http://www.test.com/...
文章浏览阅读4.8k次,点赞7次,收藏44次。欢迎关注"生信修炼手册"!bwa 是一款将序列比对到参考基因组上的软件,包含了以下3种算法BWA-backtrackBWA-SWBWA-MEMBWA-backtrack适..._bwa用法
文章浏览阅读1.2w次,点赞12次,收藏64次。实验名称:keil工程建立,点亮一个led灯实验目的:学会keil软件安装,熟悉keil界面并学习如何新建一个工程实验器材:安装有keil的电脑一台预习内容及原理:Keil C51已集成到一个功能强大的集成开发环境μVision4中,提供对8051内核的各种型号的支持。该开发环境下集成了文件编辑处理、编译链接、项目管理、工具引用和仿真软件模拟器以及Monitor51硬件目标调试器等多种功能.初步了..._c语言怎么实现两个led灯一起闪烁
文章浏览阅读256次。题目https://www.luogu.org/problem/P4442解题思路一个点可以向四边连边,也可以从最近的那一面墙连向这个点所面对的四面墙。连完边后可以直接跑spfa,因为本题根据题意不会构成菊花图(不会卡spfa)。代码#include<queue>#include<cstdio>#include<cstring>#inclu..._coci portal
华为杯数学建模比赛经验分享。准备比赛,选择合适赛题,参考书籍链接,数学建模代码合集。
文章浏览阅读2.6k次。PyAlgoTrade的主要目的是帮助人们测试其交易策略。 PyAlgoTrade有六大组件:Strategies策略 Feeds数据源 Brokers经纪商 DataSeries数据序列 Technicals指标计算Optimizer优化Strategies 定义的实现交易逻辑的类:何时买、何时卖,等等Feeds These are data providing ab_pyalgotrade csv
文章浏览阅读1.3k次。微信公众号:数据挖掘与分析学习1.Mathematical formulation许多标准机器学习方法可以被公式化为凸优化问题,即找到取决于具有d个条目的变量向量w(在代码中称为权重)的凸函数f的最小化的任务。形式上,我们可以将其写为优化问题,其中目标函数形式如下:这里向量xi∈Rd是训练数据的样本,对于1≤i≤n,yi∈R是它们对应的我们想要预测的标签。如果L(w; x,y)可以..._二项逻辑回归sample_libsvm_data.txt
文章浏览阅读1.3k次。Convert categorical variable into dummy/indicator variables参数data : array-like, Series, or DataFrameprefix : string, list of strings, or dict of strings, default NoneString to append DataFrame column ..._pd.get_dummies如果某列有缺失值