ccf 火车购票

本文介绍了一种基于Java的购票系统实现方案。该系统通过构建一个动态调整的座位集合,支持用户购买连续或非连续座位,并能实时更新剩余座位状态。当座位售罄时,系统会自动移除相应记录。
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
			List<int[]> lt = new ArrayList<int[]>();
			Scanner input = new Scanner(System.in);
			int count = input.nextInt();
			int[] buy = new int[count];
			for(int i =0;i < count;i++){
				buy[i] = input.nextInt();
				
			}
			for(int j = 0;j < 20;j++){
				int[] arr = {j,5};
				lt.add(arr);
			}
			
			for(int i =0;i<count;i++){
				
				for(int j =0; j < lt.size();j++){
					
					if(buy[i] <= lt.get(j)[1]){
						int index = lt.get(j)[0];
						int bianhao = lt.get(j)[1];
						for(int k = 1;k<=buy[i];k++){
						System.out.print(index*5 + 5 - bianhao+k + " ");
						}
						bianhao -= buy[i];
						if(bianhao==0){
							lt.remove(j);
							break;
						}else{
							int[] arr = {index,bianhao};
							lt.set(j, arr);
							break;
						}
					}else if(j == lt.size()-1){
						
						for(int k =0;k < lt.size();k++){
							int index = lt.get(k)[0];
							int bianhao = lt.get(k)[1];
							while(buy[i]!=0&&bianhao!=0){
								buy[i]--;
								System.out.print(index*5 + 5 - bianhao + 1 + " ");
								bianhao--;
							}
							if(bianhao==0&&buy[i] !=0){
								lt.remove(k);
								k--;
								continue;
							}
							if(buy[i] ==0){
								if(bianhao==0){
									lt.remove(k);
									
								}
								break;
							}
							
						}
					}
				}
				
				System.out.println();
			}
			
			
			
	}


}

 这道题的思路我的思路是如何?构建个集合lt存放座位,每次购票的行为的时候,

都会遍历这个集合,如果集合中的某个元素的座位变为0,即是卖完了,则把它从集合中删除掉。这里面有个重点就是当座位不能连在一起买的时候,就需要分开买,

因此需要一个else if来判断是否遍历完了,都还没有买到票,进而进入分散买票。

这个是我的测试结果。

 

转载于:https://www.cnblogs.com/ke-T3022/p/7929682.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值