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

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

  1. 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

  2. nで割った配列乗算のリマインダーを見つけるためのPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 複数の数値と数値入力nが与えられた場合、除算可能なすべての数値にnを掛けた後、余りを出力する必要があります。 アプローチ まず、arr [i]%nのように余りを計算します。次に、この余りに現在の結果を掛けます。 乗算後、オーバーフローを避けるために同じ余りを取ります。これは、モジュラー演算の分配法則に準拠しています。 ( a * b) % c = ( ( a % c ) * ( b % c ) ) % c 例 def findremainder(arr, lens, n):   &n