CCF 17_09_2 火车购票

CCF 17_09_2 火车购票_第1张图片

#include
#include
#include
using namespace std;



int main()
{
    vector< bool> all(100,false);
    int opt, order;
    cin >> opt;
    for (int i = 0; i < opt; i++)
    {
        cin >> order;
        bool done = false;
        for (int i = 0; i < 20; i++)
        {
            if (count(all.begin() + i * 5, all.begin() + 5 * (i + 1), false) >= order)
            {
                int count(order);
                for (int t = 1; t <= count; t++)
                {
                    if (all[i * 5 + t - 1])
                    {
                        count++;
                        continue;
                    }                       
                    cout << i * 5 + t<<' ';
                    all[i * 5 + t - 1] = true;
                }
                cout << endl;
                done = true;
                break;
            }               
        }
        if(!done)
        {
            for(int i=0;i<100;i++)
                if (!all[i])
                {
                    cout << i + 1;
                    all[i] = true;
                    order -= 1;
                    if (order == 0)
                        break;
                }
        }
    }       
    system("pause");
    return 0;
}

这里用了一个vector来装一个bool数组,然后用到了count来数数,最后根据情况进行输出,检验了,基本都是对的,但是,交上去只有90分。。。

你可能感兴趣的:(基础数据结构和算法)