火车购票问题(16年ccf)
火车购票问题(16年ccf)
假设一节车厢有20排、每一排5个座位。为方便起见,我们用1到100来给所有的座位编号,第一排是1到5号,第二排是6到10号,依次类推,第20排是96到100号。
购票时,一个人可能购一张或多张票,最多不超过5张。如果这几张票可以安排在同一排编号相邻的座位,则应该安排在编号最小的相邻座位。否则应该安排在编号最小的几个空座位中(不考虑是否相邻)。
假设初始时车票全部未被购买,现在给了一些购票指令,请你处理这些指令。
第二行包含n个整数,每个整数p在1到5之间,表示要购入的票数,相邻的两个数之间使用一个空格分隔。
对于购票指令p,输出p张车票的编号,按从小到大排序。
2 5 4 2
6 7 8 9 10
11 12 13 14
3 4
2) 购5张票,得到座位6至10。
3) 购4张票,得到座位11至14。
4) 购2张票,得到座位3、4。
#include<iostream>
using namespace std;
int arr[][]; void FenPei(int a)
{
int count=,Done = ;
for(int y=;y<=;y++)
{
for(int x=;x<=;x++)
{
if(arr[y][x]==&&count<a) count++;//数一排中连续空座的数目
}
if(count==a)//表示当前排有空座 ,分配空座,并将结果进行打印
{
int x=;
while(arr[y][x]) x++;//定位到空座
//将空座置为1,打印输出座位号
while(count--)
{
arr[y][x]=;
cout<<((y-)*+x);
x++;
if(count!=) cout<<" ";
else cout<<endl;
}
Done = ;
break;
}
count=;//在数下一排前将计数器置0
}
if(Done==){
//遍历完毕没有发现空座
for(int y=;y<=;y++)
{
for(int x=;x<=;x++)
{
if(arr[y][x]==)
{
if(a--)
{
//将空座置为1,打印输出座位号
arr[y][x]=;
cout<<((y-)*+x);
if(a!=) cout<<" ";
else cout<<endl;
}
}
}
}
} }
int main()
{
int n=,GouPiao[];
//初始化座位,置为0
for(int y=;y<=;y++)
{
for(int x=;x<=;x++)
arr[y][x] = ;
} cin>>n;
for(int i=;i<n;i++)
{
cin>>GouPiao[i];
}
for(int i=;i<n;i++)
{
FenPei(GouPiao[i]);
}
return ;
}

啊。更新更新,应该是变懒了,不就是最多分配5个座位么。。。
#include<iostream>
#include<cstring>
using namespace std;
bool buy[]; void buyTicket(int num)
{
if(num == )
{
for(int i=;i<=;i++)
{
if(buy[i]){
buy[i] = false;
cout<<i<<endl;
return;
}
}
}else if(num == ){
for(int i=;i<=;i++)
{
if(buy[i] && buy[i+] && i%!=){
buy[i] = false;buy[i+] = false;
cout<<i<<" "<<i+<<endl;
return;
}
}
}else if(num == ){
for(int i=;i<=;i++){
if(buy[i]&&buy[i+]&&buy[i+]&&i%!= && i%!=){
buy[i] = false;buy[i+] = false;buy[i+] = false;
cout<<i<<" "<<i+<<" "<<i+<<endl;
return;
}
}
}else if(num==){
for(int i=;i<=;i++){
if(buy[i]&&buy[i+]&&buy[i+]&&buy[i+]&&i%!=&&i%!= && i%!=){
buy[i] = false;buy[i+] = false;buy[i+] = false;buy[i+] = false;
cout<<i<<" "<<i+<<" "<<i+<<" "<<i+<<endl;
return;
}
}
}else if(num==){
for(int i=;i<=;i++){
if(buy[i]&&buy[i+]&&buy[i+]&&buy[i+]&&buy[i+]&&i%!=&&i%!=&&i%!= && i%!=){
buy[i] = false;buy[i+] = false;buy[i+] = false;buy[i+] = false;buy[i+] = false;
cout<<i<<" "<<i+<<" "<<i+<<" "<<i+<<" "<<i+<<endl;
return;
}
}
}
///没有连坐
for(int i=;i<=;i++)
{
if(buy[i]){
buy[i] = false;
cout<<i;
if(--num) cout<<" ";
else{
cout<<endl;return;
}
} }
} int main()
{
int n;
while(cin>>n)
{
memset(buy,true,sizeof(buy));
while(n--){ int num;
cin>>num;
buyTicket(num);
}
} return ;
}
火车购票问题(16年ccf)的更多相关文章
- 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来给所有的 ...
- CCF201609-2 火车购票 java(100分)
试题编号: 201609-2 试题名称: 火车购票 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一 ...
- CCF 201612-2 火车购票 (暴力)
问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排5个座位.为方便起见,我们用1到100来给所有的座位编号,第一排是1到5号,第二排是6到10 ...
- ccf 火车购票
import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Main2 { pu ...
- CCF|火车购票|Java|80分
import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Sc ...
- 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 ...
随机推荐
- oracle索引查询
/*<br>* *查看目标表中已添加的索引 * */ --在数据库中查找表名 select * from user_tables where table_name like 'table ...
- ASE19团队项目alpha阶段model组 scrum9 记录
本次会议于11月13日,19时整在微软北京西二号楼sky garden召开,持续7分钟. 与会人员:Jiyan He, Kun Yan, Lei Chai, Linfeng Qi, Xueqing W ...
- Qt 中配置 c99的问题
Qt 5.3 版本 报错原因是c99标准问题的话,可以尝试下面方法 打开项目中xxx.pro工程文件 加入如下语句: QMAKE_CFLAGS += -std=c99
- MySQL8.0 caching_sha2_password报错问题
在bin目录下执行mysql -uroot -p123456 登录后执行: use mysql; select host, user, plugin from user; 打印: +--------- ...
- C# Winfrom TabControl美化
实例一: using System; using System.ComponentModel; using System.Drawing; using System.Windows.Forms; na ...
- 自己手写实现Dubbo
目录 dubbo 简单介绍 为什么手写实现一下bubbo? 什么是RPC? 接口抽象 服务端实现 注册中心 消费者端: dubbo 简单介绍 dubbo 是阿里巴巴开源的一款分布式rpc框架. 为什么 ...
- 通过快捷方式lnk获得文件真实路径
通过快捷方式.lnk获得文件真实路径前提最近开发资源管理,需要预先上传大量资源,负责整理资源的同学因为空间不足,直接用快捷键方式整理视频资源OTZ,所以只能想办法通过.lnk文件获得文件的真实地址. ...
- 友善之臂NanoPC T4网络相关设置
目前(2019年8月)NanoPC T4的桌面系统FriendlyDesktop是基于Ubuntu18.04进行集成的,因此大部分可以参考Ubuntu18.04的配置方法. 1.无线网络配置 可参考官 ...
- 关于maven依赖死活都下载不了终极解决方案
项目想下载一个依赖,在idea中死都下不了,查看网上各种解决方案都没有效果,出绝招,我使用命令下载jar然后导入到项目引用的maven仓库 类似这种命令:mvn install:install-fil ...
- 大数据结构设计V1.0