ধরুন আমাদের একটি বাইনারি ম্যাট্রিক্স আছে; আমাদের ম্যাট্রিক্সের উপাদানগুলির সংখ্যা খুঁজে বের করতে হবে যা নিম্নলিখিত নিয়মগুলি অনুসরণ করে −
-
ম্যাট্রিক্স[r, c] =1
-
ম্যাট্রিক্স[r, j] =0 প্রতিটি j এর জন্য যখন j c এর সমান নয় এবং ম্যাট্রিক্স[i, c] =0 প্রতিটি i এর জন্য যখন i r এর সমান নয়।
সুতরাং, যদি ইনপুট মত হয়
| 0 | 0 | 1 |
| 1 | 0 | 0 |
| 0 | 1 | 0 |
তাহলে আউটপুট হবে 3, কারণ আমাদের সেল আছে (0,2), (1,0) এবং (2,1) যেগুলো মানদণ্ড পূরণ করে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
যদি ম্যাট্রিক্স খালি হয়, তাহলে
-
রিটার্ন 0
-
-
সারি :=ম্যাট্রিক্সে সমস্ত সারি এন্ট্রির যোগফলের একটি তালিকা
-
col :=ম্যাট্রিক্সে সমস্ত কলাম এন্ট্রির যোগফলের একটি তালিকা
-
m :=ম্যাট্রিক্সের সারি গণনা
-
n :=ম্যাট্রিক্সের কলাম গণনা
-
res :=0
-
0 থেকে m - 1 রেঞ্জের জন্য, করুন
-
0 থেকে n - 1 পরিসরে c এর জন্য, করুন
-
যদি ম্যাট্রিক্স[r, c] 1 হয় এবং সারি[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