以下是使用C++解决该问题的代码示例:

#include <iostream>
#include <queue>
#include <unordered_set>
using namespace std;

int main() {
    queue<string> players;
    unordered_set<string> playing;
    
    string event;
    while (cin >> event) {
        if (event == "start") {
            if (players.empty()) {
                cout << "Error" << endl;
            } else {
                if (players.size() >= 2) {
                    cout << players.front() << " " << players.back() << endl;
                } else {
                    cout << players.front() << endl;
                }
                playing.insert(players.front());
                if (players.size() >= 2) {
                    playing.insert(players.back());
                }
            }
        } else if (event == "arrive") {
            string player;
            cin >> player;
            if (playing.count(player) > 0 || players.size() >= 2) {
                cout << "Error" << endl;
            } else {
                players.push(player);
                cout << "OK" << endl;
            }
        } else if (event == "leave") {
            string player;
            cin >> player;
            if (playing.count(player) == 0 || (players.size() > 0 && players.front() != player)) {
                cout << "Error" << endl;
            } else {
                players.pop();
                playing.erase(player);
                cout << "OK" << endl;
            }
        }
    }
    
    return 0;
}

使用queue来维护玩家的排队顺序,使用unordered_set来记录当前正在游玩的玩家。根据不同的事件类型,进行相应的操作并输出结果

用C++解决以下问题:补充说明:这里的排队和传统的排队有出入。正在游玩的人为队列的前两位所以正在游玩视为正在排队。机厅里有一台游戏机每次可供最多两人同时游玩。但是来玩的人显然不止两个!这个时候他们就需要排队了而你需要写一个程序维护这个队列并在他人游玩结束后通知接下来上场的人。在整个过程中有以下几种事件可能发生:start:一局游戏开始。若这不是第一局游戏则上一局的参与者按照原本的顺序回到队尾。此时

原文地址: https://www.cveoy.top/t/topic/iBzo 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录