一道面试题机试题求解

来源:百度知道 编辑:UC知道 时间:2024/06/26 03:14:20
1  5    9  13
2  6    10  14
.......................
..........过道.........
3  7    11  15
4  8    12  16
.......................

(如上图所示) 有一火车有40节车厢,每个车厢有4个座位,现在要出售车票。假设每个人可以最多买4张车票,如果顾客买一张车票就将其放入一节车厢,要是买2到4张也放入一节车厢内,车票卖完为止。要求用代码实现售票系统并且打印出来,要求打印结果如下:

第1个人买了3张车票:
第1节车厢。
座位号为:1,2,5。

第2个人买了2张车票:
第2节车厢。
座位号为:3,4。

第3个人买了4张车票:
第3节车厢。
座位号为:9,10,13,14。

.................................
.........................
..............................。

............
大家说这题难不 规定1小时内写完

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class Test {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
List<Integer> seatList=null;
List trainList=new ArrayList();
int sum=40*4;
int x=0;
for(int i=1;i<=sum;i++){
boolean flag=true;
if(x==0){
seatList=new ArrayList<Integer>();
}
if(x<2){
if(trainList!=null){
for(Object train:trainList){
for(Integer seat:(List<Integer>)train){
if(seat==i){
flag=false;
}
}
}

}
if(flag){
seatList.add(i);
seatList.add(i+4);
x++;
}
}
else{
Collections.sort(seatList);
trainList.add(seatList