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

Pythonで2つのパーティションのグループを同じ合計で作成できるかどうかを確認するプログラムはありますか?


numsと呼ばれる数値のリストがあるとすると、両方のグループの要素の合計が同じである2つのグループにnumsを分割できるかどうかを確認する必要があります。

したがって、入力がnums =[2、3、6、5]のような場合、[2、6]や[3、5]のようなグループを作成できるため、出力はTrueになります。

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

  • total:=numsのすべての要素の合計

  • 合計が奇数の場合、

    • Falseを返す

  • 半整数:=合計の整数部分/ 2

  • dp:=サイズの半分+1のリストとfalseで埋める

  • dp [0]:=true

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

    • iの範囲が半分から0の場合、1ずつ減らします。

      • i> =numの場合、

        • dp [i]:=dp[i]またはdp[i-num]

  • dp [half]

    を返します


class Solution:
   def solve(self, nums):

      total = sum(nums)

      if total & 1:
         return False

      half = total // 2

      dp = [True] + [False] * half
      for num in nums:
         for i in range(half, 0, -1):
            if i >= num:
               dp[i] |= dp[i - num]

      return dp[half]

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

入力

[2, 3, 6, 5]

出力

True

  1. Pythonでノードを交換することで2つのツリーを形成できるかどうかを確認するプログラム

    2つのツリーがあるとすると、ノードの左右のサブツリーを何度でも交換して、最初のツリーを2番目のツリーに変換できるかどうかを確認する必要があります。 したがって、入力が次のような場合 その場合、出力はTrueになります これを解決するには、次の手順に従います- que1:=最初はroot0のキュー que2:=最初はroot1のキュー que1とque2は空ではありませんが、実行してください temp1:=新しいリスト、temp2:=新しいリスト values1:=新しいリスト、values2:=新しいリスト que1とque2に含まれる要素の数が

  2. 合計がkと同じかPythonではない4つの要素を見つけることができるかどうかを確認するプログラム

    numsと呼ばれる数値のリストと値kがあるとすると、リストに合計kになる4つの一意の要素があるかどうかを確認する必要があります。 したがって、入力がnums =[11、4、6、10、5、1] k =25のような場合、合計が25である[4、6、10、5]があるため、出力はTrueになります。 これを解決するには、次の手順に従います- リスト番号を並べ替える n:=numsのサイズ 0からn− 4の範囲のiの場合、実行 i +1からn− 3の範囲のjの場合、実行 l:=j + 1、h:=nums − 1のサイズ l