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

โปรแกรมค้นหาจำนวนองค์ประกอบในเมทริกซ์ตามเกณฑ์คอลัมน์แถวใน Python


สมมติว่าเรามีเมทริกซ์ไบนารี เราต้องหาจำนวนองค์ประกอบในเมทริกซ์ที่เป็นไปตามกฎต่อไปนี้ -

  • เมทริกซ์[r, c] =1

  • matrix[r, j] =0 สำหรับทุก ๆ j เมื่อ j ไม่เท่ากับ c และ matrix[i, c] =0 สำหรับทุก ๆ i เมื่อ i ไม่เท่ากับ r

ดังนั้นหากอินพุตเป็นแบบ

0 0 1
1 0 0
0 1 0

ผลลัพธ์จะเป็น 3 เนื่องจากเรามีเซลล์ (0,2) (1,0) และ (2,1) ที่ตรงตามเกณฑ์

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • หากเมทริกซ์ว่างเปล่า

    • คืนค่า 0

  • row :=รายการผลรวมของรายการแถวทั้งหมดในเมทริกซ์

  • col :=รายการผลรวมของรายการคอลัมน์ทั้งหมดในเมทริกซ์

  • m :=จำนวนแถวของเมทริกซ์

  • n :=จำนวนคอลัมน์ของเมทริกซ์

  • res :=0

  • สำหรับ r ในช่วง 0 ถึง m - 1 ให้ทำ

    • สำหรับ c ในช่วง 0 ถึง n - 1 ทำ

      • ถ้า matrix[r, c] คือ 1 และ row[r] คือ 1 และ col[c] เป็น 1 ด้วย ดังนั้น

        • res :=res + 1

  • ผลตอบแทน

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น

def solve(matrix):
   if not matrix:
      return 0

   row = [sum(r) for r in matrix]
   col = [sum(c) for c in zip(*matrix)]

   m, n = len(matrix), len(matrix[0])
   res = 0
   for r in range(m):
      for c in range(n):
         if matrix[r][c] == 1 and row[r] == 1 and col[c] == 1:
            res += 1
   return res

matrix = [
   [0, 0, 1],
   [1, 0, 0],
   [0, 1, 0]
]
print(solve(matrix))

อินพุต

[[0, 0, 1],[1, 0, 0],[0, 1, 0]]

ผลลัพธ์

3