Pythonで特定の配列式が最大化される値を見つけるプログラム
numsとvaluesという2つの配列があり、どちらにも整数が含まれていて、numsの値が厳密に増加していて、長さも同じであるとします。次のように、インデックスi、jのペアのvの値を見つける必要があります。v=values [i] + values [j] + nums [j]--nums[i]を最大化するi≤j。
>したがって、入力がnums =[1、2、7] values =[-4、6、5]のようである場合、出力は16になります。ピックi=1およびj=2を取ると、6+5になります。 +7-2=16。
これを解決するには、次の手順に従います-
-
ans1:=-inf、ans2:=-inf
-
0からnums-1のサイズのiの場合、実行します
-
ans1:=ans1と(values [i]-nums [i])の最大値
-
ans2:=ans2と(values [i] + nums [i])の最大値
-
-
ans1+ans2を返す
例
理解を深めるために、次の実装を見てみましょう
from math import inf def solve(nums, values): ans1 = -inf ans2 = -inf for i in range(len(nums)): ans1 = max(ans1, (values[i] - nums[i])) ans2 = max(ans2, (values[i] + nums[i])) return ans1 + ans2 nums = [1, 2, 7] values = [-4, 6, 5] print(solve(nums, values))
入力
[1, 2, 7], [-4, 6, 5]
出力
16
-
Pythonで安全な距離を維持できるkの最大値を見つけるプログラム
バイナリ行列があるとします。ここで、0は空のセルを意味し、1は人がいるセルを意味します。 2つのセル間の距離は、x座標の差とy座標の差の最大値です。これで、セルからマトリックス内の各人までの距離が空の正方形であり、マトリックスの各辺がすべてk以上である場合、マトリックスは係数kで安全であると見なされます。安全にできる係数kの最大値を見つける必要があります。 したがって、入力が次のような場合 0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 1 1 0 0 0 0
-
nで割った配列乗算のリマインダーを見つけるためのPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 複数の数値と数値入力nが与えられた場合、除算可能なすべての数値にnを掛けた後、余りを出力する必要があります。 アプローチ まず、arr [i]%nのように余りを計算します。次に、この余りに現在の結果を掛けます。 乗算後、オーバーフローを避けるために同じ余りを取ります。これは、モジュラー演算の分配法則に準拠しています。 ( a * b) % c = ( ( a % c ) * ( b % c ) ) % c 例 def findremainder(arr, lens, n): &n