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

Pythonで最大のK分割可能な部分列の合計を見つけるプログラム


負でない数のリストと正の値kが与えられたとします。合計がkで割り切れるような数の最大合計サブシーケンスを見つける必要があります。

したがって、入力がnums =[4、6、8、2]、k =2の場合、出力は20になります。

配列全体の合計は20で、2で割り切れます。

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

  • numsSum:=入力リストnumsの値の合計

  • 余り:=numsSum mod k

  • 余りが0と同じ場合、

    • numsSumを返す

  • リスト番号を並べ替える

  • numsの各数値の組み合わせtplに対して。行う

    • subSeqSum:=sum(tpl)

    • subSeqSum mod kが剰余と同じ場合、

      • numsSum − subSeqSum

        を返します
  • 0を返す

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

from itertools import chain, combinations
class Solution:
   def solve(self, nums, k):
      numsSum = sum(nums)
      remainder = numsSum % k
      if remainder == 0:
         return numsSum
      nums.sort()
      for tpl in chain.from_iterable(combinations(nums, r) for r in range(1, len(nums) + 1)):
         subSeqSum = sum(tpl)
         if subSeqSum % k == remainder:
            return numsSum − subSeqSum
      return 0
ob1 = Solution()
print(ob1.solve([4, 6, 8, 2], 2))

入力

[4, 6, 8, 2], 2

出力

20

  1. 配列内の最大の要素を見つけるPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、配列の最大要素を計算する必要があります。 ここでは、ループ全体をトラバースして最大の要素を計算し、要素を取得するブルートフォースアプローチを使用します。 以下の実装を観察できます。 例 # largest function def largest(arr,n):    #maximum element    max = arr[0]    # traverse the whole loop    for

  2. 配列の合計を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列が与えられた場合、与えられた配列の合計を計算する必要があります。 ここでは、ブルートフォースアプローチに従うことができます。つまり、リストをトラバースし、各要素を空の合計変数に追加します。最後に、合計の値を表示します。 以下で説明するように、組み込みの合計関数を使用して別のアプローチを実行することもできます。 例 # main arr = [1,2,3,4,5] ans = sum(arr,n) print ('Sum of the array is '