课程设计实验--火车票座位分配
- 火车票座位分配
- 1.1【问题描述】
请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配。假设一节车厢有 20 排、
每一排 5 个座位。为方便起见,我们用 1 到 100 来给所有的座位编号,第一排是 1 到 5 号,第二排是 6 到
10 号,依次类推,第 20 排是 96 到 100 号。购票时,一个人可能购一张或多张票,最多不超过 5 张。如果
这几张票可以安排在同一排编号相邻的座位,则应该安排在编号最小的相邻座位。否则应该安排在编号最
小的几个空座位中(不考虑是否相邻)。
1.2【基本要求】
假设初始时车票全部未被购买,现在给了一些购票指令,请你处理这些指令。
输入格式:输入的第一行包含一个整数 n(1 ≤ n ≤ 100),表示购票指令的数量。第二行包含 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
样例说明:
购 2 张票,得到座位 1、2。
购 5 张票,得到座位 6 至 10。
购 4 张票,得到座位 11 至 14。
购 2 张票,得到座位 3、4。
代码如下:
package 火车票座位分配;
import java.util.Scanner;
/*** 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配。* 假设一节车厢有20排,每一排 5个座位。为方便起见,我们用 1到100来给所有的座位编号,* 第一排是 1到 5号,第二排是 6到10号,依次类推,第 20排是96到100号。* 购票时,一个人可能购一张或多张票,最多不超过 5张。* 如果这几张票可以安排在同一排编号相邻的座位,则应该安排在编号最小的相邻座位。* 否则应该安排在编号最小的几个空座位中(不考虑是否相邻)。* * @author jingbu**/
public class TicketTest {static int time=0;//定义一个静态变量,用来记录每一排座位的个数的变化public static void main(String[] args) {Scanner scanner=new Scanner(System.in);//输入购票指令的数量int a=scanner.nextInt();//只能购买1-100,不在此范围则报错if(a<1||a>100) {System.out.println("购票指令的数量出错");}//购票指令的数量对应的票的张数构成的数组int[] arr=new int[a];//初始化该数组for(int i=0;i<a;i++) {int x=scanner.nextInt();//票的张数只能为1-5,不在此范围则报错if(x>5||x<1) {System.out.println("购票张数出错");}else {arr[i]=x;}}//将车的座位定义为二维数组,没有购票为0,否则为1int seat[][]=new int[20][5];//初始化该二维数组for(int i=0;i<20;i++) {for(int j=0;j<5;j++) {seat[i][j]=0;}} //座位分配算法int[] temp = new int[20];// 定义一个辅助数组,记录每排已购座位的个数//购票指令的数量决定最后输出的行数for(int i=0;i<a;i++) {//最后输出a行for(int j=0;j<20;j++) {if(arr[i]>5-temp[j]) {continue;}else if(arr[i]<=5-temp[j]) {int s=temp[j];for(int m=temp[j];m<s+arr[i];m++) {seat[j][m]=1;System.out.print((5*j+m+1)+" ");time++;temp[j]=time; }System.out.println();/** for(int y=0;y<5;y++) { if(seat[j][y]==1) { System.out.print((5*j+s+1)+" "); }* } System.out.println();*/time=0;//将记录次数置0break;}}}/** for(int i=0;i<20;i++) { for(int j=0;j<5;j++) { if(seat[i][j]==1) {* System.out.print((5*i+j+1)+" "); } } System.out.println(); }*/}}
此题难点在于输出时同一行的座位为不同行输出,具体详细看座位分配算法部分。
课程设计实验--火车票座位分配相关推荐
- c语言课程设计实验报告模板,[C语言课程设计实验报告模板.doc
[C语言课程设计实验报告模板 <程序设计基础> 课程设计报告 课程设计题目 通讯录管理系统 指导教师:____李 萍____ 班 级:__ 0903班_ _ __ 学生姓名:2009100 ...
- 大一c语言课程报告报书模板,C语言课程设计实验报模板.doc
C语言课程设计实验报模板 <程序设计基础> 课程设计报告 课程设计题目 通讯录管理系统 指导教师:____李 萍____ 班 级:__ 0903班_ _ __ 学生姓名:200910033 ...
- 2019春第二次课程设计实验报告
2019春第二次课程设计实验报告 一.实验项目名称: 贪吃蛇游戏编写: 二.实验项目功能描述: 这个实验主要是实现游戏的正常运行,实现的目标是对小蛇移动的控制, 同时对小蛇数据的保存,如何实现转弯的效 ...
- 2109春第一次课程设计实验报告
2019春第一次课程设计实验报告 一.实验项目名称: 飞机游戏的编写 二.实验项目功能描述: 这个实验主要是实现游戏的正常运行,实现控制飞机的移动功能,增加其实用度, 同时还实现发射子弹和出现敌机的操 ...
- c语言图形时钟编程,C语言图形时钟课程设计实验报告.doc
C语言图形时钟课程设计实验报告.doc 目录 1.系统功能要求 . 2. 数据结构设计及 说明 . 3.程序结构(画流程图) . 4.各模块的功能 . 5.试验结果(包括输入数据和输出结果) . 6. ...
- 2019春第一次课程设计实验报告
2019春第一次课程设计实验报告 一.实验项目名称 反弹球消砖块 二 .实验项目功能描述 用c语言编写一个反弹球小游戏,可以自己改变游戏的各项数据,可以通过键盘的 "a",&quo ...
- c语言时钟报告,C语言图形时钟课程设计实验报告
C语言图形时钟课程设计实验报告 目录1.系统功能要求.2. 数据结构设计及说明.3.程序结构(画流程图) .4.各模块的功能.5.试验结果(包括输入数据和输出结果) .6.体会.7.参考文献.8.附录 ...
- matlab数字图像处理课程设计报告,数字图像处理课程设计实验报告.doc
数字图像处理课程设计实验报告 数字图像处理课程设计 题 目:数字图像处理及Huufman(或小波变换)编码仿真实现 学生姓名: 学 院:信息工程学院 系 别:电子信息工程系 专 业:电子信息工程 班 ...
- 湖北汽车工业学院c语言程序设计 汽车零部件采购管理程序,湖北汽车工业学院c语言课程设计实验报告(采购信息管理系统).docx...
湖北汽车工业学院c语言课程设计实验报告(采购信息管理系统) C语言课程设计 商品销售信息管理系统 #include #include #include #include structproduct// ...
最新文章
- 廖雪峰团队最新研磨的实战宝典终终终终终终于免费了!
- android双击返回键退出程序的实现
- 机器学习实战 基于_机器学习实战:基于Scikit-Learn和TensorFlow—第四章笔记
- VirtualBox 安装ghost版windows XP
- cgi web页面传入命令
- python输入时间_一文搞懂python日期时间处理
- 查看android内置(webview)浏览器和系统浏览器内核信息
- springboot elementui vue商城微信小程序源码(毕设)开发讲解
- 计算机脚本模板,mv分镜头脚本范文mv的分镜头脚本格式.doc
- 雪花算法中的时间回拨问题解决方案
- 图片转码 webp 转 png、jpg
- 说一下软件测试行业的优缺点
- win7远程计算机设置路由器,win7路由器设置图解 win7路由器怎么设置
- fastadmin 后台开发实例技巧
- 大数据时代_如何构建国家地质基础数据更新体系
- 用Python实现美化照片———磨皮
- 从事家电行业17年,分享下我的购买心得:哪些品牌电器值得你购买
- 【调剂】2.28计算机考研其余调剂信息
- ICV:车规级激光雷达市场规模超7亿美元,补盲雷达有望2024年量产
- php寄生虫程序(附带asp,php劫持)