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

Pythonの特定の要素セットから特定の合計を取得できるかどうかを確認します


numsという配列と別の値の合計があるとします。 numsに存在する要素を追加して合計を取得できるかどうかを確認する必要があります。単一の要素を複数回選択する場合があります。

したがって、入力がnums =[2、3、5] sum =28のような場合、5 + 5 + 5 + 5 + 3 + 3 + 2

を使用して26を取得できるため、出力はTrueになります。

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

  • MAX:=1000
  • table:=0のサイズMAX広告塗りつぶしの配列
  • 関数util()を定義します。これには数がかかります
  • table [0]:=1
  • リスト番号を並べ替える
  • 範囲0からnums-1のサイズのiの場合、do
    • val:=nums [i]
    • table [val]がゼロ以外の場合、
      • 次の反復に進む
    • 0〜MAXの範囲のjの場合-val-1、do
      • table [j]がゼロ以外の場合、
        • table [j + val]:=1
  • メインの方法から次のようにします-
  • util(nums)
  • table [sum]がゼロ以外の場合、
    • Trueを返す
  • Falseを返す

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

MAX = 1000
table = [0] * MAX
def util(nums):
   table[0] = 1
   nums.sort()
   for i in range(len(nums)):
      val = nums[i]
      if table[val]:
         continue
      for j in range(MAX - val):
         if table[j]:
            table[j + val] = 1
def solve(nums, sum):
   util(nums)
   if table[sum]:
      return True
   return False
nums = [2, 3, 5]
sum = 28
print (solve(nums, sum))

入力

[2, 3, 5], 28

出力

True

  1. Pythonのリストの指定されたリストから肯定的な要素を取得します

    リストはネストできます。つまり、リストの要素自体がリストです。この記事では、リストのリストから正の数のみを見つける方法を説明します。結果として、新しいリストには正の数を含むネストされたリストが含まれます。 with for in ここでは、数学演算子を適用して、forループを使用してリスト内の要素の値をチェックします。値が正の場合、それをリストとしてキャプチャし、Outerforループストアをリストの最終リストとしてキャプチャします。 例 listA = [[-9, -1, 3], [11, -8, -4,434,0]] # Given list print("Given L

  2. Python-指定された辞書から並べ替えられた順序でアイテムを取得します

    Pythonディクショナリには、キーと値のペアがあります。状況によっては、辞書の項目をキーに従ってソートする必要があります。この記事では、辞書内のアイテムから並べ替えられた出力を取得するさまざまな方法を説明します。 オペレーターモジュールの使用 オペレーターモジュールには、辞書のキーの入力パラメーターのインデックスとして0をとることができるitemgetter関数があります。 itemgetterの上にsorted関数を適用し、sorted出力を取得します。 例 dict = {12 : 'Mon', 21 : 'Tue', 17: 'Wed'