Pythonのトーナメントでプレイされた試合の数をカウントするプログラム
数nがあるとします。したがって、トーナメントにはいくつかのルールがあるチームがn個あります-
-
チームの数が現在でもある場合、各チームは別のチームとマージされます。そして、合計(n / 2)の試合が行われ、そのうち(n / 2)の勝者チームが次のラウンドに進みます。
-
チームの数が奇数の場合、1つのチームがトーナメントでランダムに移動し、残りのチームがマージされます。したがって、合計(n-1)/ 2試合が行われ、(n-1)/ 2+1チームが勝者として次のラウンドに移動します。
最終的な勝者を獲得するには、プレイされた試合の総数を見つける必要があります。
したがって、入力がn =10の場合、出力は9になります。
-
最初は5〜5の部門があり、そのうち5つが資格を持ちます
-
ここで、1つのチームをゲームに渡し、2〜2チームを分割して、3チームが資格を得るようにします
-
ここで、1つのチームをゲームに渡し、1対1のチームを分割して、2つのチームが資格を得るようにします
-
1-1で割ると、1つが勝者として認定されます。
これを解決するには、次の手順に従います-
-
ans:=0
-
nは1と同じではありませんが、実行してください
-
f:=(n / 2)のフロア
-
余り:=n mod 2
-
ans:=ans + f
-
n:=f+剰余
-
-
ansを返す
例(Python)
理解を深めるために、次の実装を見てみましょう-
def solve(n): ans = 0 while n != 1: f = n//2 remainder = n % 2 ans += f n = f + remainder return ans n = 10 print(solve(n))>
入力
10
出力
9
-
Pythonで合計がkであるパスの数をカウントするプログラム
二分木と別の値kがあるとすると、合計がkになるサブ子パスへの一意のノードの数を見つける必要があります。 したがって、入力が次のような場合 k =5の場合、パスは[2、3]と[1、4] であるため、出力は2になります。 これを解決するには、次の手順に従います- count:=マップは最初にキー0の値1を保持します ans:=0、プレフィックス:=0 関数dfs()を定義します。これはノードを取ります ノードがnullでない場合、 プレフィックス:=プレフィックス+ノードの値 ans:=ans +(count [prefix --target]、これが利用できない場合は0にな
-
Pythonで行列内の囲まれた島の数を数えるプログラム
バイナリ行列があるとします。ここで、1は土地を表し、0は水を表します。私たちが知っているように、島は周囲が水に囲まれているグループ化された1のグループです。完全に囲まれた島の数を見つける必要があります。 したがって、入力が次のような場合 3つの島があるため、出力は2になりますが、そのうちの2つは完全に囲まれています。 これを解決するには、次の手順に従います- 関数dfs()を定義します。これにはi、jが必要です iとjが行列の範囲内にない場合、 Falseを返す matrix [i、j]が0と同じ場合、 Trueを返す matrix [i、j]:=0 a:=df