试题编号: | 201609-2 |
试题名称: | 火车购票 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: | 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配。 输入格式 输入的第一行包含一个整数n,表示购票指令的数量。 输出格式 输出n行,每行对应一条指令的处理结果。 样例输入 4 样例输出 1 2 样例说明 1) 购2张票,得到座位1、2。 评测用例规模与约定 对于所有评测用例,1 ≤ n ≤ 100,所有购票数量之和不超过100。 |
#include<iostream>
using namespace std;
int main(){
int n,num,i,j,k,r,flag=0;
cin>>n;
int seat[20][5]={0};
for(i=0;i<n;i++){
cin>>num;
flag=0;
for(j=0;j<20&&flag==0;j++){
for(k=0;k<5&&flag==0;k++){
if(seat[j][k]==1){
continue;
}
else if(k<=5-num){ //如果该排有连续的票
for(r=0;r<num;r++){
seat[j][k+r]=1;
cout<<j*5+k+r+1;
if(r!=num-1){
cout<<" ";
}
else{
cout<<endl;
}
}
flag=1;
}
else if(k>5-num){ //如果该排没有连续的票
break;
}
}
}
// cout<<"flag:"<<flag<<endl;
r=0;
if(flag==0){ //如果每一排都没有连续的票
for(j=0;j<20&&flag==0;j++){
for(k=0;k<5&&flag==0;k++){
if(seat[j][k]==1){
continue;
}
else{
seat[j][k]=1;
cout<<j*5+k+1;
r++;
if(r==num){
flag=1;
cout<<endl;
}
else{
cout<<" ";
}
}
}
}
}
}
}