NO.649 Dota2参议院

题目描述

在这里插入图片描述
在这里插入图片描述

解题思路

(确认过眼神 是我解不出的题…记录学习)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

class Solution(object):
    def predictPartyVictory(self, senate):
        """
        :type senate: str
        :rtype: str
        """
        Rnum=0  #R的总人数
        Dnum=0  #D的总数
        CurBanR=0  #当前被ban的R的个数
        CurBanD=0  # 当前被ban的D的个数
        totalR=0   #被ban的R的总数
        totalD=0   #被ban的D的总数
        s=[]
        for x in senate:
            s.append(x)   #将str内容放入list中
        flag=True   #设置flag 第一轮用来计数 之后的不许计数


        while(True):
            for i in range (len(s)):
                cur=s[i]
                #如果是R
                if cur=='R':
                    #并且是第一轮
                    if flag:
                        Rnum+=1  #Rnum+1
                    if CurBanR==0: #如果CurbanR==0 说明当前的R没有被ban 那么可以banD
                        CurBanD+=1
                        totalD+=1
                        if(totalD==Dnum and flag==False): return 'Radiant'
                    else:
                        CurBanR-=1  #如果CurBanR>0说明当前R已经被ban了 相当于被kill了 设置为r 没有任何权利
                        s[i]='r'
                elif cur=='D':
                    if flag:
                        Dnum+=1
                    if CurBanD==0:
                        CurBanR+=1
                        totalR+=1
                        if(totalR==Rnum and flag==False):return "Dire"
                    else:
                        CurBanD-=1
                        s [i]='d'

            flag=False
            if (totalR>=Rnum):  #最后比较 被ban的总数和R的总数
                print("r")
                return "Dire"
            if(totalD>=Dnum):
                print("d")
                return "Radiant"


senate="RD"
Solution().predictPartyVictory(senate)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值