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

最初のプレイヤーがPythonでキャンディーリムーブゲームで勝つかどうかを確認するプログラム?


キャンディーと呼ばれる番号のリストがあり、誰かが友人とゲームをしているとします。各ラウンドで、プレーヤーは同じ値の2つの連続したキャンディーを取り除くことができます。そして、キャンディーを手に入れることができない人は誰でも負けて、そのplayer1が最初に開始するので、player1が勝つかどうかを確認する必要があります。

したがって、入力がnums =[2、2、5]の場合、出力はTrueになります。まるで、player1が2を選択した場合、他のプレーヤーはキャンディーを選択できません。

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

  • スタック:=新しいスタック

  • ターン:=0

  • numsのnumごとに、実行します

    • スタックが空でなく、スタックの最上位がnumと同じである場合、

      • スタックからポップ

      • ターン:=ターン+1

    • それ以外の場合

      • numをスタックにプッシュ

  • ターンが奇数の場合はtrueを返し、それ以外の場合はfalseを返します


class Solution:
   def solve(self, nums):
      stack = []
      turns = 0
      for num in nums:
         if stack and stack[-1] == num:
            stack.pop()
            turns += 1
         else:
            stack.append(num)

      return bool(turns & 1)

ob = Solution()
nums = [2, 2, 5]
print(ob.solve(nums))

入力

[2, 2, 5]

出力

True

  1. Pythonで二分木がBSTであるかどうかをチェックするプログラム

    二分木があるとしましょう。二分探索木かどうかを確認する必要があります。私たちが知っているように、BSTには次のプロパティがあります- 左側のサブツリーのすべてのノードが現在のノード値よりも小さい 右側のサブツリーのすべてのノードが現在のノード値よりも大きい これらのプロパティは、すべてのノードに対して再帰的に保持されます したがって、入力が次のような場合 その場合、出力はTrueになります これを解決するには、次の手順に従います- x:=ツリー要素の順序どおりの走査シーケンスのリスト xがソートされている場合、 trueを返す falseを返す 理解を深めるために

  2. 与えられたグラフがPythonで2部グラフであるかどうかをチェックするプログラム

    無向グラフが1つあるとすると、グラフが2部グラフであるかどうかを確認する必要があります。グラフのすべてのエッジ{u、v}がAに1つのノードuを持ち、Bに別のノードvを持つように、グラフのノードを2つのセットAとBに分割できる場合、グラフは2部グラフであることがわかります。 したがって、入力が次のような場合 次に、出力はTrueになり、[0,4]はセットAにあり、[1,2,3]はセットBにあり、すべてのエッジはAからAまたはBからBではなく、AからBまたはBからAになります。 。 これを解決するために、次の手順に従います- 関数dfs()を定義します。これはソースを取ります