• 649.Dota2参议院


    题目链接:649. Dota2 参议院

    思路:题目假设每个人能够作出最优决定,那么,当前参议员能够作出决定时,他一定是禁用他下一位另一派的参议员,这样才能保证己方能够处于优势地位。那么设banOfR和banOfD分别为R和D被禁的人数,每次遍历只需判断当前数是否有权利,没有权利说明他被上一位其他派的议员禁了。

    代码:

    class Solution {
        public String predictPartyVictory(String senate) {
            int[] power = new int[senate.length()];//0表示有权力投票,1表示没有
            int banOfR,banOfD;
            banOfD=banOfR=0;
            for(;;){
                int numOfR, numOfD;
                numOfD=numOfR=0;
                for(int i=0; i<senate.length(); i++){//统计投票人数
                    if(power[i]==0){
                        if(senate.charAt(i) == 'R') numOfR++;
                        else numOfD++;
                    }
                }
                for(int i=0; i<senate.length(); i++){
                    if(power[i] == 1) continue;
                    switch(senate.charAt(i)){
                        case'R': 
                            if(banOfR>0){//当前人是被禁的
                                power[i] = 1;//更新状态
                                banOfR--;
                                numOfR--;
                            }else{
                                banOfD++;//当前人禁掉另一派的人
                            }
                            if(numOfD<=0) return "Radiant";//另一派人数为0,宣布当前派获胜
                            break;
                        case'D':
                            if(banOfD>0){
                                power[i]=1;
                                banOfD--;
                                numOfD--;
                            }else{
                                banOfR++;
                            }
                            if(numOfR<=0) return "Dire";
                            break;
                    }
                }
            }
        }
    }
  • 相关阅读:
    Redis
    Redis
    Redis
    linux 安装docker
    linux 安装nexus
    linux 安装jenkins
    linux 安装gitlab
    python 类的继承
    python raise & assert
    python super()
  • 原文地址:https://www.cnblogs.com/liuyongyu/p/14119593.html
Copyright © 2020-2023  润新知