CCF 2016-09-2 火车购票

题目

问题描述

   请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配。

  假设一节车厢有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>
#include<cmath>
using namespace std; int a[21][7];
int main()
{
int n,buy[101];
for(int i=0;i<20;i++)
{
for(int j=0;j<5;j++)
{
a[i][j]=0;
}
a[i][5]=5;
//应该放连续空格数的
} cin>>n;
for(int i=0;i<n;i++)
cin>>buy[i]; for(int tip=0;tip<n;tip++)
{
int order=buy[tip];
int line=0;
int pos=-1;
while(line!=20)
{
if(a[line][5]>=order)
{
pos=line;
break;
}
line++;
} if(pos==-1)
{
for(int i=0;i<20;i++)
{
for(int j=0;j<5;j++)
{
if(a[i][j]==0&&order>0)
{
a[i][j]=1;
a[i][5]--;
order--;
cout<<5*i+j+1<<" ";
}
}
}
}
else
{
int num=0;
int t=0;
a[pos][5]-=order;
for(int i=0;i<5;i++)
{
if(a[pos][i]==0)
{
num++;
if(num==order)
{
t=i;
break;
}
}
else
{
num=0;
}
}
t=t-order+1;
for(int i=0;i<order;i++)
{
a[pos][t+i]=1;
cout<<5*pos+t+i+1<<" ";
}
}
cout<<endl;
}
/* for(int i=0;i<20;i++)
{
for(int j=0;j<6;j++)
{
cout<<a[i][j];
}
cout<<endl;
}*/
return 0;
}

最新文章

  1. 利用Simple-RTMP-Server(SRS)来进行直播
  2. ps应用
  3. 循序渐进 Jprofiler
  4. LABJS使用教程
  5. 教你如何用PS制作多款按钮UI设计教程
  6. No valid host was found. There are not enough hosts available
  7. doc下批处理文件的感想
  8. GSM、GPRS、EDGE、2G、3G与WAP的关系
  9. 使用Promise规定来处理ajax请求的结果
  10. shell基础——字符串连接
  11. [Java]HashMap的两种排序方式
  12. java中的装饰设计模式,浅谈与继承之间的区别
  13. 前端如何将H5页面打包成本地app?
  14. jQuery选择器(基本过滤选择器)第三节
  15. 028 kafka面试小节
  16. C/C++读写二进制文件
  17. Spring 学习笔记(十)渲染 Web 视图 (Apache Tilesa 和 Thymeleaf)
  18. jQuery 学习笔记(5)(事件绑定与解绑、事件冒泡与事件默认行为、事件的自动触发、自定义事件、事件命名空间、事件委托、移入移出事件)
  19. 获取CPU ID--查看CPU数量/核数
  20. python 爬虫数据准换时间格式

热门文章

  1. 转载:理解scala中的Symbol
  2. MintUI引入vue项目以及引入iconfont图标
  3. Centos 7 更换为 阿里云 yum 源
  4. 关于集成通用mapper的Mybatis代码生成器产生的model类注解
  5. lintcode-1174.下一个更大的元素 III
  6. Nginx服务器的安装
  7. [C++] 对象指针使用方法
  8. C# linq 使用Groupby lamda 获取非重复数据
  9. Mxnet:以全连接层为例子自定义新的操作(层)
  10. 利用lsof命令查找已经删除的文件来释放磁盘空间