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()という関数を定義します。これはルートを取りま