CCF-CSP-2016-09-2火车购票
链接:http://118.190.20.162/view.page?gpid=T46
思路:模拟,用20个数组标记这100个座位,分别对连续和不能连续购买座位进行枚举输出。
代码:
#include<bits/stdc++.h>
using namespace std;
int a[25];
int main (){
int n,num;
cin>>n;
for(int i=0;i<n;i++){
cin>>num;
bool f=false;
for(int j=1;j<=20;j++){
if((5-a[j])>=num){
for(int k=1;k<=num;k++)
cout<<(j-1)*5+a[j]+k<<" ";
a[j]+=num;
f=true;
break;
}
}
if(!f){
for(int j=1;j<=20;j++){
if(a[j]==5)continue;
if((5-a[j])>=num){
for(int k=1;k<=num;k++)
cout<<(j-1)*5+a[j]+k<<" ";
a[j]+=num;
break;
}
else {
for(int k=1;k<=(5-a[j]);k++)
cout<<(j-1)*5+a[j]+k<<" ";
num-=(5-a[j]);
a[j]=5;
}
}
}
cout<<endl;
}
return 0;
}

浙公网安备 33010602011771号