201609-2 | |
试题名称: | 火车购票 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: | 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配。 输入格式 输入的第一行包含一个整数n,表示购票指令的数量。 输出格式 输出n行,每行对应一条指令的处理结果。 样例输入 4 样例输出 1 2 样例说明 1) 购2张票,得到座位1、2。 评测用例规模与约定 对于所有评测用例,1 ≤ n ≤ 100,所有购票数量之和不超过100。 |
import java.util.Scanner;
public class 火车购票 {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
int n=sc.nextInt();
int[] a=new int[n+1];
for(int i=1;i<=n;i++){
a[i]=sc.nextInt();
}
int[][] pos=new int[20][5];
for(int i=1;i<=n;i++){
int mark=-1;
int count=0;
for(int x=0;x<20;x++){
for(int y=0;y<5;y++){
if(pos[x][y]==0&&a[i]<=5){
count++;
if(count==a[i]){
mark=y+1-a[i];
for(int r=0;r<a[i];r++){
pos[x][mark+r]=1;
System.out.print(5*x+mark+1+r+" ");
}
System.out.println();
break;
}
}
}
count=0;
if(mark!=-1){
break;
}else{
count=0;
continue;
}
}
if(mark==-1){
count=0;
for(int k=0;k<20;k++){
for(int j=0;j<5;j++){
if(pos[k][j]==0){
count++;
pos[k][j]=1;
System.out.print(k*5+(j+1)+" ");
if(count==a[i]){
System.out.println();
break;
}
}
}
if(count==a[i]){
break;
}else{
continue;
}
}
}
}
}
}