201609-2 火车购票 Java
2024-09-07 04:49:12
思路待补充
import java.util.Scanner;
class Main{
public static void main(String[] args) {
//100个座位
int[] seat = new int[100];
Scanner sc = new Scanner(System.in);
//购票指令的数量
int n = sc.nextInt();
//存储每次的购票数量
int[] record = new int[n];
//初始化购票指令
for(int i = 0;i<n;i++){
record[i] = sc.nextInt();
}
sc.close();
//开始购票
for(int i = 0;i<n;i++){
//将每次购票放在一个变量num中
int num = record[i];
//是否有连续座位
boolean flag = false;
for(int x = 0;x<20;x++){
for(int y = 0;y<5;y++){
//当前这个位置没有被安排
//且当前行开始+当前需要预定票数要<=5
if(seat[x*5+y]==0&&y+num<=5){
for(int z = x*5+y;z<x*5+y+num;z++){
//第一次购票,就在座位标记1,第二次购票,就在座位标记2
seat[z] = i+1;
}
//有连续座位
flag = true;
//跳出第三个for循环
break;
}
}
//跳出第二个for循环
if(flag){
break;
}
}
//初始的flag是false,如果经过中间三个for循环,flag就是true,就进不了下面的if
//查看flag,如果没有连续座位,就是从前到后遍历,每一个座位遇到0,就置数字
if(!flag){
while(num-->0){
for(int w = 0;w<100;w++){
if(seat[w]==0){
seat[w] = i+1;
//置完一次就跳出for循环,给本次购票 下一张票找位置
break;
}
}
}
}
}
//开始遍历座位输出
//定义一个count,记录每一次购票是否达到本次购票数目
int count = 0;
for(int i = 0,j = 1;i<100;i++){
if(seat[i]==j){
System.out.print(i+1+" ");
count++;
//如果count等于本次购票数目,就重新开始遍历,i和count置0;j++,进行下一个购票指令
if(count==record[j-1]){
i = 0;
j++;
count = 0;
System.out.println();
}
}
}
}
}
最新文章
- 表单 - Form - 无刷新提交原理
- 【编程题目】一个整数数组,长度为 n,将其分为 m 份,使各份的和相等,求 m 的最大值★★ (自己没有做出来!!)
- thinkphp 一个页面使用2次分页的方法
- hdu 1853 Cyclic Tour 最小费用最大流
- 乱谈Qt事件循环嵌套
- 【结构型】Adapter模式
- Mac OS X 下修改网卡地址和抵御 ARP 攻击
- hdu2899 Strange fuction
- Dubbo服务接口的设计原则
- logback读取src/test/resource下的配置文件
- TabTopAutoTextSizeLayout【自定义文字字号区域(动态选项卡数据且可滑动)】
- Spring Boot 整合Quartz定时器
- 邻接表&;链式前向星
- Centos ssh 限制ip访问
- C#集成FastDFS断点续传
- FireDAC 下的 Sqlite [5] - 数据的插入、更新、删除
- e791. 为JSpinner定制编辑器
- DropDownListFor的种种纠结(禁止转载)
- CentOS7--TigerVNC
- nancyfx 自定义路由module