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

Pythonで最大nCr値を持つ指定された配列からペアを検索します


n個の整数を持つ配列arrがあるとすると、arr [i] Carr [j]ができるだけ大きくなるように、配列からarr[i]とarr[j]を見つける必要があります。ペアが複数ある場合は、いずれか1つを返却してください。

したがって、入力が[4、1、2]のようである場合、出力は4 C1 =4、4C2 =6、2C1 =2として、4 2になります。したがって、(4,2)は必要に応じてペアになります。

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

  • リストを並べ替えるv
  • N:=v [n-1]
  • N mod 2が1と同じ場合、
    • 最初:=N / 2(整数除算)
    • 秒:=最初+1
    • 左:=-1、右:=-1
    • temp:=-1
    • 0からnの範囲のiについては、
      • 最初にv[i]>の場合、次に
        • temp:=i
        • 休憩
      • それ以外の場合、
        • 違い:=最初-v [i]
        • 差が
        • res1:=違い
        • 左:=v [i]
  • 右:=v [temp]
  • difference1:=first-left
  • difference2:=right-second
  • Difference1
  • print(N、左)
  • それ以外の場合、
    • print(N、right)
  • それ以外の場合、
    • max:=N / 2(整数除算)
    • res:=3 *(10 ^ 18)
    • R:=-1
    • 0からn-1の範囲のiの場合、do
      • 違い:=| v [i] --max |
      • res:=違い
      • R:=v [i]
  • print(N、R)
  • 理解を深めるために、次の実装を見てみましょう-

    def findMatrixPair(v, n):
       v.sort()
       N = v[n - 1]
       if N % 2 == 1:
          first = N // 2
          second = first + 1
          res1, res2 = 3 * (10 ** 18), 3 * (10 ** 18)
          left, right = -1, -1
          temp = -1
          for i in range(0, n):
             if v[i] > first:
                temp = i
                break
             else:
                difference = first - v[i]
                if difference < res1:
                   res1 = difference
                   left = v[i]
          right = v[temp]
          difference1 = first - left
          difference2 = right - second
          if difference1 < difference2:
             print(N, left)
          else:
             print(N, right)
       else:
          max = N // 2
          res = 3 * (10 ** 18)
          R = -1
          for i in range(0, n - 1):
             difference = abs(v[i] - max)
             if difference < res:
             res = difference
             R = v[i]
          print(N, R)
    v = [4,1,2]
    n = len(v)
    findMatrixPair(v, n)

    入力

    [4,1,2], 3

    出力:

    4 2

    1. C++で指定されたオブジェクトの配列から最大の高さのピラミッドを見つけます

      n個のオブジェクトの配列があるとします。各オブジェクトの幅はW[i]です。 -のようにピラミッド状に配置する必要があります i番目の全幅が(i + 1)番目未満 i番目のオブジェクトの総数が(i + 1)番目未満です たとえば、重みが[40、100、20、30]の場合、出力は2になります。したがって、最上位レベルは30、次に下位レベル20、40、100 これを解決するために、欲張りアプローチを使用します。アイデアは、幅の狭いオブジェクトを上部に配置し、次のオブジェクトを真下のレベルに配置するというように使用することです。レベルの最大数を取得するには、指定された配列を並べ替

    2. Pythonですべてのペアが適切である特定の配列の任意のシーケンスの最大サイズを見つけるプログラム

      サイズnのシーケンス番号があるとします。すべてのペア(p、q)が適切なペアであるnumsのサブシーケンスの最大サイズを見つける必要がありますか?ペイトは、次の条件の少なくとも1つを保持している場合にのみ、適切なペアであると言われます。1.pの個別の素数除数の数のパリティがbのパリティと等しい。たとえば、値18には、2と3の2つの異なる素数の約数があります。2。pのすべての正の約数の合計のパリティはqと同じです。 したがって、入力がnums =[2,3,6,8]の場合、出力は3になります。 これを解決するには、次の手順に従います- n:=numsのサイズ 3つの空のリストcnt、