一二三四五 上山打老虎

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;
}

posted @ 2021-04-04 11:23  黒川川  阅读(54)  评论(0)    收藏  举报