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

Pythonで行列のすべての行に共通する個別の要素を見つける


次数mxmの正方行列があるとします。与えられた行列のすべての行に共通するすべての異なる要素を見つける必要があります。

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

13 2 15 4 17
15 3 2 4 36
15 2 15 4 12
15 26 4 3 2
2 19 4 22 15

この場合、出力は[2,4,15]

になります。

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

  • 関数sortRows()を定義します。これにはマトリックスが必要です

  • n:=行数

  • 0からnの範囲のiの場合、実行

    • リスト行列を並べ替える[i]

  • mainメソッドで、次のようにします-

  • n:=行数

  • sortRows(matrix)

  • current_idx:=サイズnのリスト、0で埋める

  • 0からnの範囲のiの場合、実行

    • current_idx [i]:=0

  • f:=0

  • current_idx [0]

    • 値:=matrix [0、current_idx [0]]

    • present:=True

    • 1からnの範囲のiの場合、実行します

      • while(current_idx [i]

        • current_idx [i]:=current_idx [i] + 1

      • matrix [i、current_idx [i]-1]がvalueと同じでない場合、

        • present:=False

      • current_idx [i]がnと同じ場合、

        • f:=1

        • ループから出てきます

    • 存在がゼロ以外の場合、

      • 表示値

    • fが1と同じ場合、

      • ループから出てきます

    • current_idx [0]:=current_idx [0] + 1

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

MAX = 100
def sortRows(matrix):
   n = len(matrix)
   for i in range(0, n):
      matrix[i].sort();
def find_common(matrix):
   n = len(matrix)
   sortRows(matrix)
   current_idx = [0] * n
   for i in range (0, n):
      current_idx[i] = 0
   f = 0
   while(current_idx[0] < n):
      value = matrix[0][current_idx[0]]
      present = True
      for i in range (1, n):
         while (current_idx[i] < n and matrix[i][current_idx[i]] <= value):
            current_idx[i] = current_idx[i] + 1
         if (matrix[i][current_idx[i] - 1] != value):
            present = False
         if (current_idx[i] == n):
            f = 1
            break
      if (present):
         print(value, end = ", ")
      if (f == 1):
         break
      current_idx[0] = current_idx[0] + 1

mat = [
   [13, 2, 15, 4, 17],
   [15, 3, 2, 4, 36],
   [15, 2, 15, 4, 12],
   [15, 26, 4, 3, 2],
   [2, 19, 4, 22, 15]]
find_common(mat)

入力

[[13, 2, 15, 4, 17],
[15, 3, 2, 4, 36],
[15, 2, 15, 4, 12],
[15, 26, 4, 3, 2],
[2, 19, 4, 22, 15]]

出力

2, 4, 15,

  1. Pythonでツリーのすべての要素の合計を見つけるプログラム

    いくつかの値を含む二分木があるとすると、ツリー内のすべての値の合計を見つける必要があります。 したがって、入力が次のような場合 その場合、出力は14になります これを解決するには、次の手順に従います- 関数recurse()を定義します。これはノードを取ります val:=ノードの値 ノードの左側がnullでない場合、 val:=val + recurse(ノードの左側) ノードの権利がnullでない場合、 val:=val + recurse(ノードの右側) 戻り値 メインの方法から、次のようにします- ルートがゼロ以外

  2. 指定された整数配列のすべての個別の要素を出力するPythonプログラム。

    与えられた整数配列。配列の要素が重複している可能性があります。私たちのタスクは、個別の値を表示することです。 例 Input::A=[1,2,3,4,2,3,5,6] Output [1,2,3,4,5,6] アルゴリズム Step 1: input Array element. Step 2: Then pick all the elements one by one. Step 3: then check if the picked element is already displayed or not. Step 4: use one flag variable which i