Pythonでスコアがバイナリ文字列として与えられるゲームの勝者を探す
バレーボールの試合のスコアを表すバイナリ文字列が1つあるとすると、次の条件に基づいて試合の勝者を見つける必要があります-
-
2つのチームが対戦し、両方のチームが14ポイントに達した場合を除いて、最初に15ポイントを獲得したチームが勝者になります。
-
その時点で両方のチームが14ポイントに達すると、2ポイントのリードを維持しているチームが勝者になります。
指定されたバイナリ文字列から、0はチームがポイントを失うことを表し、1はチームがポイントを獲得することを示します。チームが試合に勝ったか負けたかを確認する必要があります。
したがって、入力がscore ="1001100110111001110011011"のような場合、出力はチームが勝ちます
これを解決するには、次の手順に従います-
-
score_cnt:=[0,0]
-
0からスコアのサイズまでの範囲のiについては、実行してください
-
pos:=ASCII of(score [i])-ASCII of( '0')
-
score_cnt [pos]:=score_cnt [pos] + 1
-
score_cnt[0]がnおよびscore_cnt[1]− n -1と同じである場合、
-
「チームロスト」を返す
-
-
score_cnt[1]がnと同じでscore_cnt[0]
-
「チームが勝った」を返す
-
-
score_cnt[0]がn-1と同じで、score_cnt[1]がn-1と同じ場合、
-
score_cnt [0]:=0
-
score_cnt [1]:=0
-
ループから出てきます
-
-
-
i:=i + 1
-
iからスコアのサイズまでの範囲のiについては、実行してください
-
pos:=ASCII of(score [i])-ASCII of( '0')
-
score_cnt [pos]:=score_cnt [pos] + 1
-
if | 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
-
Pythonで特定の二分木で最大の完全なサブツリーを見つける
二分木があるとしましょう。この二分木で最大の完全なサブツリーのサイズを見つける必要があります。私たちが知っているように、完全な二分木は、おそらく最終レベルなしですべてのレベルが完全に満たされ、最終レベルに可能な限りすべてのキーが残っている場合、二分木です。 したがって、入力が次のような場合 その場合、出力はサイズとして4になり、順序どおりの走査は10、45、60、70になります。 これを解決するには、次の手順に従います- isComplete、isPerfectなどのいくつかのパラメーターを使用して戻り型を定義します。これらは最初はfalseで、次にsizeとrootTree、
-
Pythonで特定の二分木で最大の完全なサブツリーを見つける
特定の二分木があるとします。与えられた二分木で最大のパーフェクトサブツリーのサイズを見つける必要があります。私たちが知っているように、完全な二分木は、すべての内部ノードに2つの子があり、すべての葉が同じレベルにある二分木です。 したがって、入力が次のような場合 その場合、出力は3になり、サブツリーは これを解決するには、次の手順に従います- RetTypeと呼ばれる1つのブロックを定義します。これは、isPerfect、height、rootTreeを保持し、最初はすべて0です get_prefect_subtree()という関数を定義します。これはルートを取りま