Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonを使用して取得できるコインの最大数を見つけるためのプログラム


3 * n個のコインの山があり、それらのサイズがさまざまであるとすると、3人のプレーヤーが-

のようなゲームをプレイしています。
  • 各ステップで、player1はコインの山を3つ選択します。

  • 彼が選んだのは、Player2が最大コイン数の山を選ぶことです。

  • Player1は、コインの最大数で次の山を選びます。

  • Player3が最後の山を選びます。

  • コインの山がなくなるまで、これらの手順を繰り返します。

ここで、piles [i]がi番目のパイル内のコインの数である、pilesと呼ばれる整数の配列がある場合、Player1が持つことができるコインの最大数を見つける必要があります。

したがって、入力がpiles =[2,4,1,2,7,8]のような場合、最初はトリプレット(2,7,8)を選択でき、次にPlayer2は8を選択するため、出力は9になります。 Player1は7を選択し、2はPlayer3用です。次に、もう一度トリプレット(1,2,4)を選択し、次にPlayer2がコイン4のパイルを選択し、次にPlayer1が2を選択し、残りの1をPlayer3に選択します。現在、Player1には7 + 2 =9コインがあり、これが最大です。

これを解決するには、次の手順に従います-

  • リストの山を並べ替える

  • ans:=0

  • 杭のサイズは0と同じではありませんが、実行してください

    • ans:=ans+杭の最後から2番目の要素

    • 杭から最後から2番目の要素を削除する

    • 杭から最後の要素を削除する

    • 杭から最初の要素を削除する

  • ansを返す

理解を深めるために、次の実装を見てみましょう-

def solve(piles):
   piles.sort()
   ans = 0
   while(len(piles)!=0):
      ans = ans + piles[-2]
      del piles[-2]
      del piles[-1]
      del piles[0]
   return ans
piles = [2,4,1,2,7,8]
print(solve(piles))

入力

[2,4,1,2,7,8]

出力

9

  1. Pythonでインドの宗派を使用してnR.sを取得できる方法の数を見つけるためのプログラム

    金種の硬貨が限られているとします(1ポンド、2ポンド、5ポンド、10ポンド)。合計で合計£nになる方法をいくつ見つける必要がありますか?サイズ4の配列カウントがあります。ここで、count [0]は1ポンドのコインを示し、count[1]は2ポンドのコインを示します。 したがって、入力がn =25 count =[7,3,2,2]の場合、出力は9になります。 これを解決するには、次の手順に従います- denom:=[1,2,5,10] A:=サイズ(n + 1)の配列で、0で埋めます B:=Aからの新しいリスト 0から(count [0]およびnの最小値)の範囲のiの場合、do

  2. 可能なBSTの数を見つけるプログラムは、Pythonのn個の異なるノードを使用して生成できます

    数nがあるとします。 [1,2、...、n]のような数がある場合、これらのn個の値を使用して形成できるBSTの数を数える必要があります。答えが大きすぎる場合は、結果を10 ^ 9+7で変更します。 したがって、入力がn =3の場合、出力は14になります。 これを解決するために、次の手順に従います a:=値が[0、1]のリスト m:=10 ^ 9 + 7 max_n:=1000 2からmax_n+1の範囲のkについては、 (1 +リストのすべての要素の合計(a [i] * a [k --i] for all i in range(1、k)))modmをaの最後に挿入します