引言:CSP(http://www.cspro.org/lead/application/ccf/login.jsp)是由中国计算机学会(CCF)发起的"计算机职业资格认证"考试,针对计算机软件开发、软件测试、信息管理等领域的专业人士进行能力认证。认证对象是从事或将要从事IT领域专业技术与技术管理人员,以及高校招考研究生的复试对象。

  • 问题描述

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

  假设一节车厢有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 <stdio.h>

void adjust(int j, int *monitor, int seat[20][5]);

int main(void)

{

,不能赋其他值

代表已售出,0代表未售出

int monitor[20]; // 每一排还剩下几个连续的空座位

for (int i = 0; i < 20; i++)

{

monitor[i] = 5;

}

int count; // 指令的条数

scanf("%d", &count);

for (int i = 0; i < count; i++)

{

int order;

scanf("%d", &order);

int flag = 1; // 标识是否在同一排中找到相邻的座位

for (int j = 0; j < 20; j++)

{

// 在同一排中找到相邻的座位

if (monitor[j] >= order)

{

flag = 0;

monitor[j] = monitor[j] - order;

int temp_count = 0;

for (int k = 0; k < 5; k++)

{

if (seat[j][k] == 0 && temp_count < order)

{

seat[j][k] = 1;

printf("%d ", j*5+k+1);

temp_count++;

}

}

printf("\n");

break;

}

}

if (flag == 1) // 未能在同一排找到连续相邻的座位

{

int temp_count = 0;

int sign = 0;

for (int j = 0; j < 20; j++)

{

for (int k = 0; k < 5; k++)

{

if (seat[j][k] == 0 && temp_count < order)

{

seat[j][k] = 1;

printf("%d ", j*5+k+1);

temp_count++;

sign = 1;

}

}

if (sign == 1)

{

sign = 0;

adjust(j, monitor, seat);

}

}

printf("\n");

}

}

return 0;

}

// 计算每一排剩余连续席位数

void adjust(int j, int *monitor, int seat[20][5])

{

int sum = 0;

int k = 0;

int max = 0;

for (int i = 0; i < 5; i++)

{

sum = sum + seat[j][i];

if (sum != 0)

{

int temp = i - k;

if (temp > max)

{

max = temp;

}

sum = 0;

k = i+1;

}

}

monitor[j] = max;

}

CSP201609-2:火车购票的更多相关文章

  1. CCF CSP 201609-2 火车购票

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

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

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

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

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

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

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

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

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

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

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

  7. ccf 火车购票

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

  8. CCF2016092火车购票

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

  9. ccf-201609-2 火车购票

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

随机推荐

  1. CentOS7网络连接问题以及重启网络服务失败

    1.重启网络服务失败 在运行“/etc/init.d/network restart”命令时,出现错误“Job for network.service failed. See 'systemctl s ...

  2. Java并发编程(四)锁的使用(上)

    锁的作用 锁是一种线程同步机制,用于实现互斥,当线程占用一个对象锁的时候,其它线程如果也想使用这个对象锁就需要排队.如果不使用对象锁,不同的线程同时操作一个变量的时候,有可能导致错误.让我们做一个测试 ...

  3. Java基础之File类的使用

    Java基础之File类的使用 1.File类的构造方法和常用方法 2.对File中listFile(FileNameFilter name)学习 3.与File文件类相关的实现 File类的构造方法 ...

  4. 001_02-python基础习题答案

    python 基础习题 执行 Python 脚本的两种方式 如:脚本/python/test.py 第一种方式:python /python/test.py 第二中方式:在test.py中声明:/us ...

  5. SpringAOP的自定义注解实践

    springaop属于spring的重要属性,在java中有相当广泛的用途,大家一般都接触过aop实现事务的管理,在xml里配好声明式事务,然后直接在service上直接加上相应注解即可, 今天我们来 ...

  6. Mysql双向同步热备份设置

    1.环境描述. 主机:103.241.49.137(A) 主机:103.240.182.191(B) MYSQL 版本为5.1.112.授权用户.(本人比较懒,直接用的root 跳过这一步)A:mys ...

  7. centos 安装 telnet

    (转)centos7安装telnet服务 场景:在进行Telnet测试时候,发现无法连接,所以还得把这个软件也安装了 1 CentOS7.0 telnet-server 启动的问题 解决方法:   先 ...

  8. 调试日志——基于stm32的智能声光报警器(一)

    今天新画的PCB板子到了,到了手中焊好电源部分测试,没有问题. 测试了下载程序,没有问题.时钟电路供电电路正常. 但是在程序运行的时候发现了问题,程序下载进去了却不运行. 这时候就要从原理图来找问题了 ...

  9. UCSC 工具链接

    http://hgdownload.cse.ucsc.edu/admin/exe/linux.x86_64/

  10. scRNA-seq genomic analysis pipline

    a scRNA-seq genomic anlysis pipline .caret,.dropup>.btn>.caret{border-top-color:#000!important ...