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

Pythonでの操作後の最大サブ配列の合計を見つけるプログラム


整数を含む配列が与えられたとします。 array[i]の値をその2乗値に置き換えることができる操作を実行できます。またはarray[i]*array[i]。この種の操作は1つだけ許可されており、操作後に可能な最大のサブ配列の合計を返す必要があります。サブアレイを空にすることはできません。

したがって、入力がarray =[4、1、-2、-1]のような場合、出力は17になります。

array [0]の値をその二乗値に置き換えると、配列は[16、1、-2、-1]になります。これから可能な最大サブアレイは[16、1]であり、最大合計値は16 + 1=17です。

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

  • dp1:=負の無限大の値を含む新しいリスト
  • dp2:=負の無限大の値を含む新しいリスト
  • 配列内のnumごとに、
      を実行します。
    • dp1の最後に((dp1の最後の要素+ num)、num)の最大値を挿入します
    • dp2の最後に最大((dp1 + num ^ 2の最後から2番目の要素)、num ^ 2、(dp2 + numの最後の要素))を挿入します
  • dp2の最大要素を返します

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

def solve(array):
   dp1 = [float('-inf')]
   dp2 = [float('-inf')]
   for num in array:
      dp1.append(max(dp1[-1] + num, num))
      dp2.append(max(dp1[-2] + num**2, num**2, dp2[-1]+num))
   return max(dp2)

print(solve([4, 1, -2, -1]))

入力

[4, 1, -2, -1]

出力

17

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

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列の合計を計算するために必要な配列が与えられます。 合計を取得するために各インデックスで配列と要素全体をトラバースするブルートフォースアプローチについては、以下で説明します。合計を取得するための各インデックスについては、以下で説明します。 例 # sum function def sum_(arr,n):    # using built-in function    return(sum(arr)) # main arr = [11,22,33,44,55,66

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

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