试题链接
#include<iostream>
using namespace std;
struct Fare{
int value;
int isBought = 0;
};
int main()
{
struct Fare a[20][5];
int m = 1;
for (int i = 0; i < 20; i++ ){
for(int j = 0; j < 5; j++ ){
a[i][j].value = m++;
}
}
int n;
cin >> n;
int p;
while(n--){
bool isDeal = false;
cin >> p;
for(int i = 0; i < 20; i++ ){
int cnt = 0;//记录当前行为空座位的个数
for(int j = 0; j < 5; j++ ){
if(a[i][j].isBought == 0)
cnt++;
}
if(cnt >= p){
for ( int j = 0; j < 5; j++ ){
if(a[i][j].isBought == 0 && p > 0){
cout<<a[i][j].value<<" ";
a[i][j].isBought = 1;
p--;
}
}
isDeal = true; //是否处理
}
if(isDeal){
break;
}
}
if(!isDeal){//若没有连续的空位置时进行这里
for (int i= 0; i < 20; i++ ){
for ( int j = 0; j < 5; j++ ){
if(a[i][j].isBought == 0 && p > 0){
cout << a[i][j].value<<" ";
a[i][j].isBought = 1;
p--;
}
}
}
}
cout << endl;
}
return 0;
}