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

Pythonで要素を再配置することにより、リストのパワーの最大値を取得するプログラム


N個の正の数のリスト番号があるとします。これで、リストから任意の1つの値を選択し、それを任意の位置に移動(スワップではなく)できます。また、位置に移動することもできません。それで、リストの可能な最大の最終的な力は何であるかを見つけなければなりませんか?私たちが知っているように、リストの力は、すべてのインデックスiに対する(index + 1)*value_at_indexの合計です。

$$ \ displaystyle \ sum \ Limits_ {i =0} ^ {n-1}(i + 1)\ times list [i] $$

したがって、入力がnums =[6、2、3]のような場合、出力は26になります。これは、6を最後に移動してリスト[2、3、6]を取得できるため、累乗は次のようになります。(2 * 1)+(3 * 2)+(6 * 3)=26。

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

  • P:=値が0のリスト

  • ベース:=0

  • Aの各インデックスiと値xについて、実行します

    • Pの最後にP+xの最後の要素を挿入します

    • ベース:=ベース+(i + 1)* x

  • ans:=base

  • Aの各インデックスiと値xについて、実行します

    • 範囲0からA+1のサイズのjの場合、実行

      • ans:=ansの最大値と(base + P [i] --P [j]-(i --j)* x)

  • ansを返す

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

class Solution:
   def solve(self, A):
      P = [0]
      base = 0
      for i, x in enumerate(A, 1):
         P.append(P[-1] + x)
         base += i * x
      ans = base
      for i, x in enumerate(A):
         for j in range(len(A) + 1):
            ans = max(ans, base + P[i] - P[j] - (i - j) * x)
      return ans
ob = Solution()
nums = [6, 2, 3]
print(ob.solve(nums))

入力

[6, 2, 3]

出力

26

  1. リスト内の要素の合計を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力としてリストが与えられた場合、与えられたリストの合計を計算する必要があります。 ここでは、考慮すべき2つのアプローチがあります。つまり、組み込み関数を使用する方法と、ブルートフォースアプローチを使用する方法です。 アプローチ1-組み込み関数の使用 例 # main arr = [1,2,3,4,5] ans = sum(arr) print ('Sum of the array is ',ans) 出力 15 すべての変数と関数はグローバルスコープで宣言されて

  2. リストからN個の最大の要素を見つけるPythonプログラム

    整数リストが与えられた場合、私たちのタスクはリスト内で最大のN個の要素を見つけることです。 例 Input : [40, 5, 10, 20, 9] N = 2 Output: [40, 20] アルゴリズム Step1: Input an integer list and the number of largest number. Step2: First traverse the list up to N times. Step3: Each traverse find the largest value and store it in a new list. 例 def Nnumbere