CCF_201609_火车购票(超漂亮的做法)

来源:互联网 发布:英雄联盟网络监控 编辑:程序博客网 时间:2024/05/01 08:21

只用了一个大小为20的数组表示二十排,每个数组元素表示该排剩余座位数量。

30行代码,Yeah~


#include<iostream>using namespace std;int main(){    int n, m, i, cnt;    bool contiflag;    cin >> n;    int seat[20];    for(i = 0; i < 20; i++) seat[i] = 5;    while(n--){        contiflag = false;        cnt = 0;        cin >> m;        for(i = 0; i < 20; i++){            if(seat[i] >= m){                contiflag = true;                break;            }        }        if(contiflag){            for(int j = 0; j < m; j++)                cout << i*5 + (5 - --seat[i]) << " ";        }else{            for(i = 0; seat[i] == 0; i++);            for(; i < 20; i++){                while(seat[i]-- && m--){                    cout << i*5 + (5 - (seat[i])) << " ";                    if(m <= 0) contiflag = true;                }                if(contiflag) break;            }        }        cout << endl;    }    return 0;}


原创粉丝点击