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

Pythonで指定されたセルの行および-または列の要素を除くマトリックス内のすべての要素の合計を検索します


2Dマトリックスとセルインデックスのセットがあるとします。セルインデックスは(i、j)として表されます。ここで、iは行、jは列です。ここで、指定されたセルインデックス(i、j)ごとに、i番目の行に存在する要素を除くすべてのマトリックス要素の合計を見つける必要があります。 /またはj番目の列。

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

2 2 3
4 5 7
6 4 3
セルインデックス=[(0、0)、(1、1)、(0、1)]の場合、出力は[19、14、20]

になります。

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

  • n:=ind_arrのサイズ

  • ans:=新しいリスト

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

    • 合計:=0

    • 行:=ind_arr [i、0]

    • col:=ind_arr [i、1]

    • 0からマットの行数までの範囲のjについては、次のようにします

      • 0からマップの列数までの範囲のkについては、次のようにします

        • jがrowと同じでなく、kがcolと同じでない場合、

          • Sum:=Sum + mat [j、k]

    • ansの最後にSumを挿入します

  • ansを返す

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

def show_sums(mat, ind_arr):
   n = len(ind_arr)
   ans = []
   for i in range(0, n):
      Sum = 0
      row = ind_arr[i][0]
      col = ind_arr[i][1]
      for j in range(0, len(mat)):
         for k in range(0, len(mat[0])):
            if j != row and k != col:
               Sum += mat[j][k]
      ans.append(Sum)
   return ans
mat = [[2, 2, 3], [4, 5, 7], [6, 4, 3]]
ind_arr = [(0, 0),(1, 1),(0, 1)]
print(show_sums(mat, ind_arr))

入力

mat = [[2, 2, 3], [4, 5, 7], [6, 4, 3]] ind_arr = [(0, 0),(1, 1),(0, 1)

出力

[19, 14, 20]

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

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

  2. Pythonで行および列ごとに並べ替えられた行列からすべての要素を並べ替えられた順序で出力するには

    行列のすべての要素をソートされた順序で必要とする場合があります。ただし、行列は行と列の形式であるため、結果を得るために通常の並べ替えアルゴリズムを適用しません。むしろ、以下のユーザー定義関数を使用して要素を並べ替えます。 例 def heapq(a, k, i):    greater = i    l = 2 * i + 1    r = 2 * i + 2    if l < k and a[i] < a[l]:       greater = l   &nb