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

Pythonで方程式の最大値を見つけるプログラム


2D平面上の座標点を含むpointsという配列があるとします。これらは、x値で並べ替えられます。ここで、points [i] =(x_i、y_i)なので、すべての1 <=i

したがって、入力がpoints =[[2,4]、[3,1]、[6,11]、[7、-9]] k =1の場合、最初の2つのポイントが6になるため、出力は6になります。条件を満たす|xi--xj | <=1ここで、方程式を計算すると、4+ 1 + | 2--3|が得られます。 =6. 3番目と4番目のポイントも条件を満たし、11 + -9 + |6-7|の値を返します。 =3なので、最大は6です。

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

  • 左:=0、右:=1

  • max_value:=-inf

  • 正しい<ポイントのサイズ、実行

    • (xl、yl):=ポイント[左]

    • (xr、yr):=ポイント[右]

    • diff:=| xr --xl |

    • 左が右と同じ場合、

      • 右:=右+ 1

    • それ以外の場合、diff <=kの場合、

      • m:=yl + yr + diff

      • max_value:=max_valueとmの最大値

      • yl> =yr --diffの場合、

        • 右:=右+ 1

      • それ以外の場合

        • 左:=左+ 1

      • それ以外の場合

        • 左:=左+ 1

  • max_valueを返す

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

def solve(points, k):
   left, right = 0, 1
   max_value = float('-inf')

   while right < len(points):
      xl, yl = points[left]
      xr, yr = points[right]

      diff = abs(xr - xl)
      if left == right:
         right += 1
      elif diff <= k:
         m = yl + yr + diff
         max_value = max(max_value, m)
         if yl >= yr - diff:
            right += 1
         else:
            left += 1
      else:
         left += 1

   return max_value

points = [[2,4],[3,1],[6,11],[7,-9]]
k = 1
print(solve(points, k))

入力

[[2,4],[3,1],[6,11],[7,-9]], 1

出力

6

  1. Pythonの有向グラフで最大の色の値を見つけるプログラム

    n個の色付きノードとm個の異なるエッジを持つ有向グラフがあるとします。また、ノードには0からn-1までの番号が付けられています。小文字の文字列colがあります。ここで、col [i]は、このグラフのi番目のノードの色を表します(0-インデックス付き)。また、edges [j] =(u、v)が表すエッジリストがあり、uとvの間にエッジがあります。 グラフの有効なパスは、1からkまでのすべてのiのノードxiのシーケンスであり、xiからxi+1までの有向エッジがあります。パスの色は、そのパスの最も頻繁なノードの色です。そのグラフで有効なパスの最大の色の値を見つける必要があります。グラフにサイクルが

  2. 配列内の最大の要素を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列を指定すると、配列内で最大の要素を見つける必要があります。 アプローチ maxを最初の要素として初期化します。 この後、指定された配列を2番目の要素から最後までトラバースします。 トラバースされたすべての要素について、現在のmaxの値と比較します maxより大きい場合、maxが更新されます。 それ以外の場合、ステートメントはを超えます 以下の実装を見てみましょう- 例 def largest(arr,n):    #maximal element