Pythonで合計が最大kの長方形の合計を見つけるプログラム
2d行列と別の値kがあるとすると、sum≤kであるarectangleの最大の合計を見つける必要があります。
したがって、入力が次のような場合
5 | −2 |
7 | 10 |
k =15の場合、出力は12になります。これは、長方形[5、7]を使用して、12の合計が15未満になるためです。
これを解決するには、次の手順に従います-
-
n:=a
の行数 -
m:=a
の列数 -
ans:=inf
-
0からnの範囲のi1の場合、実行
-
行:=サイズmのリストで、0で埋めます
-
i1からnの範囲のi2については、次のようにします
-
0からmの範囲のjについては、次のようにします
-
row [j]:=row [j] + a [i2、j]
-
-
s:=新しいセット
-
sに0を挿入
-
合計:=0
-
0からmの範囲のjについては、次のようにします
-
合計:=合計+行[j];
-
temp:=(sum − k)より大きいsのすべてのアイテムのリスト
-
tempのサイズが0より大きい場合、
-
u:=最低温度
-
ans:=ansの最大値と(sum − u)
-
-
合計をsに挿入
-
-
-
-
ansを返す
理解を深めるために、次の実装を見てみましょう-
例
class Solution: def solve(self, a, k): n = len(a) if n == 0: return 0; m = len(a[0]) ans = -999999; for i1 in range(n): row = [0]*m; for i2 in range(i1, n): for j in range(m): row[j] += a[i2][j] s = set() s.add(0) sum = 0 for j in range(m): sum += row[j]; temp = [e for e in s if e > (sum − k)] if len(temp) > 0: u = min(temp) ans = max(ans, sum − u) s.add(sum) return ans ob = Solution() matrix = [ [5, −2], [7, 10] ] k = 15 print(ob.solve(matrix, k))
入力
[ [5, −2], [7, 10] ], 15
出力
12
-
リストの累積合計を見つけるPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが与えられたので、累積合計でリストを作成する必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # cumulative sum def Cumulative(l): new = [] cumsum = 0 for element in l: cumsum += element new.append(cumsum) &
-
配列の合計を見つけるPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列が与えられた場合、与えられた配列の合計を計算する必要があります。 ここでは、ブルートフォースアプローチに従うことができます。つまり、リストをトラバースし、各要素を空の合計変数に追加します。最後に、合計の値を表示します。 以下で説明するように、組み込みの合計関数を使用して別のアプローチを実行することもできます。 例 # main arr = [1,2,3,4,5] ans = sum(arr,n) print ('Sum of the array is '