Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

หาผลรวมเมทริกซ์ยกเว้นแถวและคอลัมน์ของเซลล์ที่กำหนดใน Python

สมมติว่าเรามีเมทริกซ์ 2D และชุดดัชนีเซลล์ (i, j) สำหรับแต่ละเซลล์ ต้องการหาผลรวมของสมาชิกทั้งหมดในเมทริกซ์ ยกเว้นแถวที่ i และคอลัมน์ที่ j

เช่น เมทริกซ์ 3x3 และ indices = [(0,0), (1,1), (0,1)] ผลลัพธ์คือ [19, 14, 20]

ขั้นตอนการแก้ปัญหา

  1. คำนวณผลรวมทั้งหมดของเมทริกซ์
  2. คำนวณผลรวมแต่ละแถวและแต่ละคอลัมน์
  3. สำหรับแต่ละคำถาม (i, j): คำตอบ = total_sum - row_sum[i] - col_sum[j] + mat[i][j] (เพราะ mat[i][j] ถูกลบซ้ำ)

ตัวอย่างโค้ด Python

def show_sums(mat, ind_arr):
    total = sum(sum(row) for row in mat)
    row_sums = [sum(row) for row in mat]
    col_sums = [sum(mat[i][j] for i in range(len(mat))) for j in range(len(mat[0]))]
    ans = []
    for i, j in ind_arr:
        s = total - row_sums[i] - col_sums[j] + mat[i][j]
        ans.append(s)
    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]