火车购票问题(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 ...
随机推荐
- django form 和modelform样式设置
目录 1.form通过attr设置属性 2.输入框设置表单状态 3.modelform的使用 4.结合modelform 使用for循环生成输入框 5.基于init构造方法设置样式 6.基本增删改 ...
- MUI 跨域请求web api
由于刚接触MUI框架,所以在跨域问题上花了一点时间.希望我的方式能帮你少走点弯路(大神就直接过里吧)! 首先,遇到这个问题,各种百度.其中说法最多的是将mui,js文件里的 setHeader('X- ...
- MSP432 BSL流程(UART)
升级流程 PC程序会解析脚本中的命令,根据命令码做相应的操作.数据来自于命令后的文件(当前目录下的数据文件) # cat script_P4xx_uart.txt LOG //记录日志 MODE P4 ...
- yii框架下使用redis
1 首先获取到 yii2-redis-master.zip 压缩包 下载地址https://github.com/yiisoft/yii2-redis/archive/master.zip 2 把下载 ...
- WPF - 仿QQ2014
声明:非原创.项目是网上发现的,以学习为目的重写了部分代码,合理地调整了下布局,巧妙地简化了下Style样式.重写还算是有价值的,并非完全复制. 效果: 获取项目源码:https://pan.baid ...
- Flask debug 模式 PIN 码生成机制安全性研究笔记
Flask debug 模式 PIN 码生成机制安全性研究笔记 0x00 前言 前几天我整理了一个笔记:Flask开启debug模式等于给黑客留了后门,就Flask在生产网络中开启debug模式可能产 ...
- jquery 去除 css 的 background-image 样式
首先我使用了这个: $('#**').css('background-image', null); 没有效果...... 然后我用了这个: $('#staffName').css('backgroun ...
- Python 基础知识 (1) 持续更新
(1)数字和表达式 当进入Python交互式的时候,Python就可以直接当成计算机使用 如 >>> 2 + 2 4 但是 当 1个整数 和 另外一个整数 相除的时候,计算的结果,只 ...
- Django的 select_related 和 prefetch_related 函数对 QuerySet 查询的优化
引言 在数据库存在外键的其情况下,使用select_related()和prefetch_related()很大程度上减少对数据库的请求次数以提高性能 1.实例准备 模型: from django.d ...
- 如何在Google Maps 添加多个标记
JS如下: (function() { window.onload = function() { // Creating an object literal containin ...