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

Pythonで繰り返される整数ゲームを削除して勝つための動きの数を見つけるためのプログラム


2人の友人のAmalとBimalが、numsと呼ばれる番号のソートされたリストを使用してゲームをプレイしているとします。このゲームでは、1ターンで、アマルは任意の3つの数字を選択します。 Bimalはそれらの1つを削除し、次にAmalはそれらの1つを削除します。リストは奇数の要素から始まります。ここで、Amlaは、リストに繰り返し要素が含まれないようにするために必要なターン数を最小化することを望んでいます。Bimalは、ターン数を最大化することを望んでいます。アマルとビマルが最適に行動する場合、このゲームに必要なターン数を見つける必要があります。

したがって、入力がnums =[1、1、2、3、3、3、4]の場合、出力は2になります。たとえば、Amalが[1、1、3]を選択した場合、Bimalは3を削除して最大化します。順番に、配列は[1、1、2、3、3、4]、Amalは1を削除するため、配列は[1,2,3,3,4]になり、次の順番でAmalは[3,3、 4]、その後、Bimalはターンを最大化するために4を削除します。したがって、Amalは3を削除でき、配列は[1,2,3]になり、重複する要素はありません。

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

繰り返し:=0

1からnumsのサイズの範囲のiの場合、実行します

nums[i]がnums[i-1]と同じ場合、

繰り返し:=繰り返し+ 1

(repeats + 1)/ 2

の商を返します

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

class Solution:
   def solve(self, nums):
      repeats = 0
      for i in range(1, len(nums)):
         if nums[i] == nums[i-1]:
            repeats += 1
      return (repeats + 1) // 2
ob = Solution()
nums = [1, 1, 2, 3, 3, 3, 4]
print(ob.solve(nums))

入力

[1, 1, 2, 3, 3, 3, 4]

出力

2

  1. Pythonでサイズkの増加するサブシーケンスの数を見つけるプログラム

    numsと呼ばれる数のリストと別の値kがあるとすると、厳密に増加しているサイズkのサブシーケンスの数を見つける必要があります。答えが非常に大きい場合は、10 ^ 9+7で変更します。 したがって、入力がnums =[2、3、4、1] k =2のような場合、サイズ2のサブシーケンスがあるため、出力は3になります。[2、3]、[3、4]、 [2、4]。 これを解決するには、次の手順に従います- m:=10 ^ 9 + 7 dp:=numsと同じサイズのリストで、1を入力します 次のk回繰り返します。 dp-1から0の範囲サイズのjの場合、1ずつ減らします。 dp [j]:=0

  2. リスト内で最大数を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 与えられたリスト入力では、与えられたリストの中で最大の数を見つける必要があります。 ここでは、2つのアプローチについて説明します 並べ替え手法の使用 組み込みのmax()関数を使用する アプローチ1-組み込みのsort()関数を使用する 例 list1 = [18, 65, 78, 89, 90] list1.sort() # main print("Largest element is:", list1[-1]) 出力 Largest element is: