查找在Python中以二进制字符串形式给出分数的游戏的获胜者
假设我们有一个二进制字符串表示排球比赛的得分,我们必须根据以下条件找到比赛的获胜者:
有两支球队互相比赛,得分最高15分的球队将是获胜者,除非两支球队均达到14分。
当两支球队当时都达到14分时,保持领先2分的球队将成为获胜者。
从给定的二进制字符串中,0表示团队失去积分,而1表示团队赢得积分。我们必须检查球队是赢还是输。
因此,如果输入像分数=“1001100110111001110011011”,那么输出将是团队获胜
为了解决这个问题,我们将遵循以下步骤-
score_cnt:=[0,0]
对于范围在0到分数范围内的我,执行
score_cnt[0]:=0
score_cnt[1]:=0
从循环中出来
返回“团队获胜”
返回“团队迷路”
pos:=(分数[i])的ASCII-('0')的ASCII
score_cnt[pos]:=score_cnt[pos]+1
如果score_cnt[0]与n和score_cnt[1]−n-1相同,则
如果score_cnt[1]与n相同且score_cnt[0]<n-1,则
如果score_cnt[0]与n-1相同,而score_cnt[1]与n-1相同,则
我:=我+1
对于我在分数范围内的我,做
如果score_cnt[0]>score_cnt[1],则
除此以外,
返回“团队迷路”
返回“团队获胜”
pos:=(分数[i])的ASCII-('0')的ASCII
score_cnt[pos]:=score_cnt[pos]+1
如果|score_cnt[0]-score_cnt[1]|与2相同
示例
让我们看下面的实现以更好地理解-
def predictWinner(score, n): score_cnt = [0,0] for i in range(len(score)): pos = ord(score[i]) - ord('0') score_cnt[pos] += 1 if (score_cnt[0] == n and score_cnt[1] < n - 1): return "Team lost" if (score_cnt[1] == n and score_cnt[0] < n - 1): return "Team won" if (score_cnt[0] == n - 1 and score_cnt[1] == n - 1): score_cnt[0] = 0 score_cnt[1] = 0 break i += 1 for i in range(i, len(score)): pos = ord(score[i]) - ord('0') score_cnt[pos] += 1 if (abs(score_cnt[0] - score_cnt[1]) == 2): if (score_cnt[0] > score_cnt[1]): return "Team lost" else: return "Team won" score = "1001010101111011101111" n = 15 print(predictWinner(score, n))
输入值
"1001010101111011101111"
输出结果
Team won