मान लीजिए हमारे पास एक बाइनरी मैट्रिक्स है; हमें मैट्रिक्स में उन तत्वों की संख्या ढूंढनी है जो निम्नलिखित नियमों का पालन करते हैं:
matrix[r, c] = 1matrix[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) हैं जो मानदंडों को पूरा करते हैं।
समाधान दृष्टिकोण
प्रत्येक पंक्ति और स्तंभ का योग गिनें। एक सेल (r, c) मानदंडों को पूरा करता है यदि matrix[r][c] == 1, पंक्ति r का योग 1 है, और स्तंभ c का योग 1 है।
- यदि मैट्रिक्स खाली है, तो 0 लौटाएं।
row= प्रत्येक पंक्ति के योग की सूची की गणना करें।col= प्रत्येक स्तंभ के योग की सूची की गणना करें (zip(*matrix)का उपयोग करके)।- सभी सेल्स पर पुनरावृति करें, यदि
matrix[r][c] == 1 और row[r] == 1 और col[c] == 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