在 Python 中查詢得分以二進位制字串表示的比賽獲勝者
假設我們有一個二進位制字串表示排球比賽的得分,我們需要根據以下條件找到比賽的獲勝者:
有兩支隊伍互相比賽,率先獲得 15 分的隊伍獲勝,除非兩支隊伍都達到 14 分。
當兩支隊伍都達到 14 分時,領先兩分的隊伍獲勝。
從給定的二進位制字串中,0 表示隊伍失分,1 表示隊伍得分。我們需要檢查隊伍是贏了還是輸了比賽。
因此,如果輸入類似於 score = "1001100110111001110011011",則輸出將是“隊伍獲勝”。
為了解決這個問題,我們將遵循以下步驟:
score_cnt := [0,0]
對於 i 從 0 到 score 的大小,執行:
pos := score[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,則:
score_cnt[0] := 0
score_cnt[1] := 0
退出迴圈
i := i + 1
對於 i 從 i 到 score 的大小,執行:
pos := score[i] 的 ASCII 值 - '0' 的 ASCII 值
score_cnt[pos] := score_cnt[pos] + 1
如果 |score_cnt[0] - score_cnt[1]| 等於 2,則:
如果 score_cnt[0] > score_cnt[1],則:
返回“隊伍失利”
否則,
返回“隊伍獲勝”
示例
讓我們看看下面的實現以更好地理解:
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
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP