Computer >> Máy Tính >  >> Lập trình >> Python

Tìm tổng của tất cả các phần tử trong ma trận ngoại trừ các phần tử trong hàng và-hoặc cột của ô đã cho bằng Python


Giả sử chúng ta có một ma trận 2D và một tập hợp các chỉ mục ô. Các chỉ số ô được biểu diễn dưới dạng (i, j) trong đó i là hàng và j là cột, bây giờ, với mọi chỉ số ô nhất định (i, j), chúng ta phải tìm tổng của tất cả các phần tử ma trận ngoại trừ các phần tử có trong hàng thứ i và / hoặc cột thứ j.

Vì vậy, nếu đầu vào giống như

2 2 3
4 5 7
6 4 3

cell indices =[(0, 0), (1, 1), (0, 1)], thì đầu ra sẽ là [19, 14, 20]

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • n:=kích thước của ind_arr

  • ans:=một danh sách mới

  • đối với tôi trong phạm vi từ 0 đến n, hãy thực hiện

    • Tổng:=0

    • row:=ind_arr [i, 0]

    • col:=ind_arr [i, 1]

    • đối với j trong phạm vi 0 đến số hàng của thảm, thực hiện

      • đối với k trong phạm vi 0 đến số cột của bản đồ, thực hiện

        • nếu j không giống hàng và k không giống col, thì

          • Tính tổng:=Sum + mat [j, k]

    • chèn Sum vào cuối ans

  • trả lại ans

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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))

Đầu vào

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

Đầu ra

[19, 14, 20]