1. 程式人生 > 實用技巧 >2020-12-11 Dota2參議院

2020-12-11 Dota2參議院

題目

解題思路

  • 若當前所有議員都是天輝或夜魘的人,那麼直接得出結果;
  • 否則,需要從對方還可以發言的議員中選擇一位,將其禁掉。選擇誰呢?應當優先選擇這一輪中還能夠發言的第一個對方議員,其次選擇下一輪中第一個發言的議員。

實現程式碼

class Solution {
public:
    string predictPartyVictory(string senate) {
        queue<int> radiant, dire;
        int n = senate.length();
        for (int i = 0; i < n; i++){
            if (senate[i] == 'R')
                radiant.push(i);
            else
                dire.push(i);
        }

        while (!radiant.empty() && !dire.empty()){
            if (radiant.front() < dire.front()){
                radiant.push(n + radiant.front());
            } else {
                dire.push(n + dire.front());
            }
            dire.pop();
            radiant.pop();
        }
        if (dire.empty()){
            return "Radiant";
        } else {
            return "Dire";
        }
    }
};

提交結果