90!!!
题目描述
解题思路
#include<iostream>
using namespace std;
struct sit{
int num;
int flag;//标识位 1代表有座 0 代表无座
sit(){}
sit(int _num,int _flag){
num=_num;
flag=_flag;
}
};
sit a[103];
void fun(sit b[103])//不相邻输出
{
for(int i=0;i<100;i++)
{
if(b[i].flag==1)
{
cout<<b[i].num;
b[i].flag=0;
break;
}
}
}
int main()
{
int n,x;
cin>>n;
for(int i=0;i<100;i++){
a[i].num=i+1;
a[i].flag=1;
}
for(int p=0;p<n;p++){
cin>>x;
if(x==1)
{
fun(a);
if(p!=n-1)
cout<<endl;
}
else if(x==2){
for(int j=0;j<99;j++)
{
if(a[j].flag==1&&a[j+1].flag==1&&a[j+1].num%5!=1)
{
cout<<a[j].num<<' '<<a[j+1].num;
if(p!=n-1)
cout<<endl;
a[j].flag=0;
a[j+1].flag=0;
break;
}else{
if(j==98)//没有相邻的
{
for(int k=0;k<2;k++)
{
fun(a);
cout<<' ';
}
if(p!=n-1)
cout<<endl;
}
}
}
}else if(x==3)
{
for(int j=0;j<98;j++)
{
if(a[j].flag==1&&a[j+1].flag==1&&a[j+2].flag==1&&(a[j+2].num%5!=1&&a[j+2].num%5!=2))
{
cout<<a[j].num<<' '<<a[j+1].num<<' '<<a[j+2].num;
if(p!=n-1)
cout<<endl;
a[j].flag=0;
a[j+1].flag=0;
a[j+2].flag=0;
break;
}else{
if(j==97){
for(int k=0;k<3;k++)
{
fun(a);
cout<<' ';
}
if(p!=n-1)
cout<<endl;
}
}
}
}else if(x==4)
{
for(int j=0;j<96;j=j+5)
{
if(a[j].flag==1)
{
cout<<a[j].num<<' '<<a[j+1].num<<' '<<a[j+2].num<<' '<<a[j+3].num;
if(p!=n-1)
cout<<endl;
a[j].flag =0;
a[j+1].flag=0;
a[j+2].flag=0;
a[j+3].flag=0;
break;
}
else{
if(j==95){
for(int k=0;k<4;k++)
{
fun(a);
cout<<' ';
}
if(p!=n-1)
cout<<endl;
}
}
}
}else{
for(int j=0;j<96;j=j+5)
{
if(a[j].flag==1)
{
cout<<a[j].num<<' '<<a[j+1].num<<' '<<a[j+2].num<<' '<<a[j+3].num<<' '<<a[j+4].num;
if(p!=n-1)
cout<<endl;
a[j].flag =0;
a[j+1].flag=0;
a[j+2].flag=0;
a[j+3].flag=0;
a[j+4].flag=0;
break;
}
else{
if(j==95){
for(int k=0;k<5;k++)
{
fun(a);
cout<<' ';
}
if(p!=n-1)
cout<<endl;
}
}
}
}
}
return 0;
}