火车购票问题(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 ...
 
随机推荐
- scp上传文件到远程服务器
			
scp -P 22 E:/download/2028792_www.yeves.cn_nginx/cloud.pem root@ip:/usr/local/src
 - MySQL8.0 caching_sha2_password报错问题
			
在bin目录下执行mysql -uroot -p123456 登录后执行: use mysql; select host, user, plugin from user; 打印: +--------- ...
 - 自己整理的的数据操作DbHelper
			
using System.Data; using System.Data.SqlClient; using System.Configuration; namespace WindowsFormsAp ...
 - 【Day3】4.Xpath语法与案例
			
课程目标 1.谷歌浏览器配置Xpath 2.Xpath常用语法 3.Xpath常用案例 1.谷歌浏览器配置Xpath Xpath下载:http://chromecj.com/web-developme ...
 - 【转载】网易极客战记官方攻略-地牢- 迷一般的 Kithmaze
			
关卡连接: https://codecombat.163.com/play/level/riddling-kithmaze 如果你第一次走上歧途,改变你的循环来找到出路. 简介: 敬请期待! 默认代码 ...
 - RHEL8 创建本地YUM存储库
			
yum 的好处及本地yum的好处不在本文讨论范畴,本文针对rhel8中的新功能yum做简要介绍和配置,在 RHEL 8中分为两个存储库: BaseOS 应用程序流(AppStream) BaseOS中 ...
 - texture2dArray
			
https://medium.com/@calebfaith/how-to-use-texture-arrays-in-unity-a830ae04c98b http://cdn.imgtec.com ...
 - swoole 协程channel乱测
			
channel和数组差不多,可以被用作队列,属性capacity是设置容量,isEmpty() isFull() 用来判断队列是空还是满,push()加入队列 pop()弹出队列 interface ...
 - Luogu P4198 楼房重建 分块 or 线段树
			
思路:分块 提交:2次(第一次的求解有问题) 题解: 设块长为$T$,我们开$N/T$个单调栈,维护每一块的上升斜率. 修改时暴力重构整个块,$O(T)$ 求解时记录一个最大斜率$lst$,然后块内二 ...
 - prev([expr])  取得一个包含匹配的元素集合中每一个元素紧邻的前一个同辈元素的元素集合。
			
prev([expr]) 概述 取得一个包含匹配的元素集合中每一个元素紧邻的前一个同辈元素的元素集合. 可以用一个可选的表达式进行筛选.只有紧邻的同辈元素会被匹配到,而不是前面所有的同辈元素.直线电机 ...