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

Pythonでk番目に大きいXOR座標値を見つけるプログラム


1つのmxn行列があるとします。および別の値k。ここで、行列の座標(a、b)の値は、すべての行列[i、j]のXORです。ここで、iは範囲(0からa)にあり、jは範囲(0からb)にあります。行列のすべての座標のk番目に大きい値(1インデックス)を見つける必要があります。

したがって、入力が次のような場合

5 2
1 6

また、k =1の場合、座標(0,1)の値は5 XOR 2 =7であり、これが最大であるため、出力は7になります。

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

  • m:=行数、n:=列数
  • 0からm-1の範囲のiの場合、do
    • 0からn-1の範囲のjの場合、do
      • jがゼロ以外の場合、
        • matrix [i、j]:=matrix [i、j] XOR matrix [i、j-1]
  • 見た:=新しい地図
  • count:=0
  • 0からn-1の範囲のiの場合、do
    • 0〜m-1の範囲のjの場合、do
      • jがゼロ以外の場合、
        • matrix [j、i]:=matrix [j、i] XOR matrix [j-1、i]
      • seen [matrix [j、i]] =(可能であれば1 + sawen [matrix [j、i]]、それ以外の場合は1)
      • count:=count + 1
      • カウント>kの場合、
        • min_value:=最小値
        • sawed [min_value]:=saw [min_value]-1
        • sawed [min_value]が0の場合、
          • min_value-th要素を表示から削除
  • 見たものの最小値を返す

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

def solve(matrix, k):
   m, n = len(matrix), len(matrix[0])
   for i in range(m):
      for j in range(n):
         if j:
            matrix[i][j] ^= matrix[i][j-1]

   seen = {}
   count = 0
   for i in range(n):
      for j in range(m):
         if j:
            matrix[j][i] ^= matrix[j-1][i]

         seen[matrix[j][i]] = seen.get(matrix[j][i], 0) + 1
         count += 1

         if count > k:
            min_value = min(seen)
            seen[min_value] -= 1
            if not seen[min_value]:
               seen.pop(min_value)

   return min(seen)
matrix = [[5,2],[1,6]]
k = 1
print(solve(matrix, k))

入力

[[5,2],[1,6]], 1

出力

7

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

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、配列の最大要素を計算する必要があります。 ここでは、ループ全体をトラバースして最大の要素を計算し、要素を取得するブルートフォースアプローチを使用します。 以下の実装を観察できます。 例 # largest function def largest(arr,n):    #maximum element    max = arr[0]    # traverse the whole loop    for

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

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