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 Listlt = new ArrayList (); 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 < 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来判断是否遍历完了,都还没有买到票,进而进入分散买票。
这个是我的测试结果。