火车购票问题(16年ccf)

问题描述
  请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配。
  假设一节车厢有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。
 #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)的更多相关文章

  1. CCF CSP 201609-2 火车购票

    题目链接:http://118.190.20.162/view.page?gpid=T46 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排 ...

  2. CCF 2016-09-2 火车购票

    CCF 2016-09-2 火车购票 题目 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排5个座位.为方便起见,我们用1到100来给所有的 ...

  3. CCF201609-2 火车购票 java(100分)

    试题编号: 201609-2 试题名称: 火车购票 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一 ...

  4. CCF 201612-2 火车购票 (暴力)

    问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排5个座位.为方便起见,我们用1到100来给所有的座位编号,第一排是1到5号,第二排是6到10 ...

  5. ccf 火车购票

    import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Main2 { pu ...

  6. CCF|火车购票|Java|80分

    import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Sc ...

  7. CSP201609-2:火车购票

    引言:CSP(http://www.cspro.org/lead/application/ccf/login.jsp)是由中国计算机学会(CCF)发起的"计算机职业资格认证"考试, ...

  8. 【刷题笔记】火车购票-----java方案

    问题描述请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排5个座位.为方便起见,我们用1到100来给所有的座位编号,第一排是1到5号,第二排是6到10号 ...

  9. CCF2016092火车购票

    问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排5个座位.为方便起见,我们用1到100来给所有的座位编号,第一排是1到5号,第二排是6到10 ...

随机推荐

  1. Linux学习(五)-Linux组管理和权限管理

    Linux组基本介绍 在Linux中的每一个用户必须属于一个组,不能独立与组外.在Linux中每个文件有所有者,所在组,其他组的概念 所有者 所在组 其它组 改变用户所在组 1.文件/目录 所有者 文 ...

  2. datatable 写入excel 2007

    1 添加引用: NPOI NPOI.OOXML 2 private static void GenerateFile(DataTable dt) { DataSet ds = new DataSet( ...

  3. java EE加载peoperties配置文件

    //加载配置文件 InputStream in = JedisUtils.class.getClassLoader().getResourceAsStream("redis.properti ...

  4. zxx.cms.app 开发中的一些git命令

    第一行命令 查看当前项目git的状态 显示是干净的 第二行创建一个 login 分支 并且切换到login 分支 用于login功能模块的开发 第三行 查看当前 所有的 分支 安装less-loade ...

  5. instanceof解析

    https://www.zhihu.com/question/21574535/answer/18998914 Java instanceof 关键字是如何实现的? 基本理解 只是在同一个类加载器加载 ...

  6. 【loj#2133 && luoguP2178】[NOI2015]品酒大会

      题目传送门:loj#2133 luoguP2178   简要题意:给定一个字符串\(s\),每个后缀都有权值,对于每个长度\(len\),求出所有最长公共前缀\(\geq len\)的后缀对的总数 ...

  7. 调查问卷WebApp

    1. 效果演示 2. 主要知识点 使用slot分发内容 动态组件 组件通信 实例的生命周期 表单 3. 遇到的问题 bus 通信 第一次 $on 监听不到 // 解决bus 第一次通信 $on 监听不 ...

  8. 将服务端select设置为非阻塞,处理更多业务

    服务端代码: #include<WinSock2.h> #include<Windows.h> #include<vector> #include<stdio ...

  9. IIS教程:因权限问题被拒绝访问的解决方案

    https://blog.csdn.net/a497785609/article/details/49952281 写了一个类IISAdmin,负责建立.设置.删除虚拟目录,发现在web中调用,遇到权 ...

  10. 字符串搜索(strStr)--- C++版

    上篇中是用JAVA实现的字符串搜索算法, 这次改用C++来实现,当然在C++就没有像JAVA那样方便的API可以很简便的实现了,其思想跟上篇类似,直接上具体实现代码: 编译运行: 下面分析下流程: 还 ...