สมมติว่าเรามีเมทริกซ์ไบนารี เราต้องหาจำนวนองค์ประกอบในเมทริกซ์ที่เป็นไปตามกฎต่อไปนี้ -
-
เมทริกซ์[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