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
-
Pythonプログラムで配列の合計を見つける
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列の合計を計算するために必要な配列が与えられます。 合計を取得するために各インデックスで配列と要素全体をトラバースするブルートフォースアプローチについては、以下で説明します。合計を取得するための各インデックスについては、以下で説明します。 例 # sum function def sum_(arr,n): # using built-in function return(sum(arr)) # main arr = [11,22,33,44,55,66
-
配列の合計を見つけるPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列が与えられた場合、与えられた配列の合計を計算する必要があります。 ここでは、ブルートフォースアプローチに従うことができます。つまり、リストをトラバースし、各要素を空の合計変数に追加します。最後に、合計の値を表示します。 以下で説明するように、組み込みの合計関数を使用して別のアプローチを実行することもできます。 例 # main arr = [1,2,3,4,5] ans = sum(arr,n) print ('Sum of the array is '