题目链接:http://118.190.20.162/view.page?gpid=T46

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

大致思路的话:就是按照题目模拟就完了,开了两个数组一个记录车票编号,一个记录座位是否还有票,然后先一排一排地判断是否有连续的票,如果有就选择这一排连续的座位,另外,如果都不满足的话,那就只能从第一排开始有票就买了(题目要求从小到大排序地买)。其实吧,我觉得我没想到我的能过,感觉题目数据有缺陷,我只判断了一排中余票是否大于p,但是并没有判断一排大于p的座位是否是连续,假如p=3,我这一排的余票的号码是【1 2 4 5】即这排总的余票是4>p=3,这其实并不能满足题意的连续,但是我的程序判断可以,所以感觉数据还是蛮水的。。。

 //CCF CSP 201609-2 火车购票
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <stack>
#include <queue>
using namespace std;
int a[];
int b[];
int n,x,sum;
int main()
{
while(cin>>n){
for(int i=;i<;i++) a[i]=;
int t=,flag;
queue<int> q;
while(n--){
cin>>x;
flag=;
for(int i=;i<=;i++){
sum=;
for(int j=;j<=;j++){
sum+=a[*(i-)+j];
}
if(sum>=x){
for(int j=;j<=;j++){
if(a[*(i-)+j]==&&x){
b[*(i-)+j]=*(i-)+j;
q.push(*(i-)+j);
t++;
x--;
a[*(i-)+j]=;
}
}
while(!q.empty()){
cout<<q.front();
q.pop();
if(!q.empty()) cout<<" ";
}
cout<<endl;
flag=;
break;
}
}
if(flag==){
for(int i=;i<=;i++){
for(int j=;j<=;j++){
if(a[*(i-)+j]==&&x){
b[*(i-)+j]=*(i-)+j;
q.push(*(i-)+j);
t++;
x--;
a[*(i-)+j]=;
}
}
}
while(!q.empty()){
cout<<q.front();
q.pop();
if(!q.empty()) cout<<" ";
}
cout<<endl;
}
}
}
return ;
}

CCF CSP 201609-2 火车购票的更多相关文章

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

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

  2. 火车购票问题(16年ccf)

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

  3. CCF CSP 认证

    参加第八次CCF CSP认证记录 代码还不知道对不对,过两天出成绩. 成绩出来了,310分. 100+100+100+10+0: 考试13:27开始,17:30结束,提交第4题后不再答题,只是检查前四 ...

  4. CCF CSP 201703-3 Markdown

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201703-3 Markdown 问题描述 Markdown 是一种很流行的轻量级标记语言(l ...

  5. CCF CSP 201703

    CCF CSP 2017·03 做了一段时间的CCF CSP试题,个人感觉是这样分布的 A.B题基本纯暴力可满分 B题留心数据范围 C题是个大模拟,留心即可 D题更倾向于图论?(个人做到的D题基本都是 ...

  6. CCF CSP 201312-3 最大的矩形

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201312-3 最大的矩形 问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i( ...

  7. CCF CSP 201609-3 炉石传说

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201609-3 炉石传说 问题描述 <炉石传说:魔兽英雄传>(Hearthston ...

  8. CCF CSP 201403-3 命令行选项

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201403-3 命令行选项 问题描述 请你写一个命令行分析程序,用以分析给定的命令行里包含哪些 ...

  9. CCF CSP 201709-4 通信网络

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201709-4 通信网络 问题描述 某国的军队由N个部门组成,为了提高安全性,部门之间建立了M ...

随机推荐

  1. JS_高程8.BOM window对象(1)

    1.全局作用域 var age = 14; window.coloer = "pink"; console.log(delete window.age);//false 使用var ...

  2. 渲染引擎 & 页面渲染流程 & 阻塞

    文档对象模型(Document Object Model,简称DOM) 浏览器渲染引擎 一个渲染引擎 主要模块: HTML 解析器 解释 HTML 文档的解析器,将 HTML 文本 解析成 DOM 树 ...

  3. Node.js_文件系统 FS

    文件系统 FS——File System 所谓的文件系统,就是对计算机中的文件进行增.删.查.改等操作 是一个服务器的基础 node 通过核心 FS 模块来操作文件系统 简单写 // 1. 导入 fs ...

  4. DEV中右键菜单如何只在非空单元格上显示?

    问题: 1. 开发时,我的winform程序中有很多gridview,我希望右键菜单只在我点击非空的行时才显示,点击其他空白区域时不显示: 2. 有一个树状导航图,treelist 中的节点都有右键菜 ...

  5. 不让浏览器缓存index.html

    参考文档:https://www.2cto.com/ask/question/4598 location = /index.html { add_header Cache-Control " ...

  6. SOAPwebservice 与Restfull webservice之间的区别

    简单对象访问协议(Simple Object Access Protocol,SOAP)是一种基于 XML 的协议,可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(HTTP),简单邮件传 ...

  7. 【Python基础】lpthw - Exercise 37 复习各种符号

    本节需要熟悉python的符号和关键字的功能. 一.关键字 1. and 逻辑与,如 True and False == False的值为True 2. as with...as...的功能类似try ...

  8. linux和shell的学习记录

    1.16条常用的命令 .文件的权限修改:(把文件1.txt的归属改为mysql的,然后ll查看) chown mysql:mysql .txt .增加当前用户的x权限,然后ll查看: chomd u+ ...

  9. django 缓存信号等

    参考别人的博客:写的挺好 http://www.cnblogs.com/wupeiqi/articles/5246483.html

  10. c++ STL概述

    2018-09-26 c++ STL(标准模板库)是一套通过c++模板类实现的标准类库,提供了通用的模板和函数,功能强大,大大的提高了c++的开发效率. c++ STL的核心主要包括三个组件:(1)容 ...