ধরুন আমাদের একটি 2d বাইনারি ম্যাট্রিক্স আছে, যেখানে 1 একটি বোমার প্রতিনিধিত্ব করে এবং 0 একটি খালি ঘরকে উপস্থাপন করে। যখন একটি বোমা বিস্ফোরিত হয়, একই সারি এবং কলামের সমস্ত স্থানগুলি ক্ষতিগ্রস্ত হয়। ক্ষতিগ্রস্থ না হওয়ার জন্য আমরা কতগুলি জায়গায় দাঁড়াতে পারি তা খুঁজে বের করতে হবে৷
সুতরাং, যদি ইনপুট মত হয়
1 | 1 | 0 |
0 | 0 | 0 |
0 | 0 | 0 |
তাহলে আউটপুট হবে 2, কারণ নিচের ডান কক্ষে দুটি স্পেস এবং মাঝখানের ডান কক্ষটি নিরাপদ।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:
-
r :=ম্যাট্রিক্সের সারি গণনার সমান আকারের একটি তালিকা এবং মিথ্যা দিয়ে পূরণ করুন
-
c :=ম্যাট্রিক্সের কলাম গণনার মতো আকারের একটি তালিকা এবং মিথ্যা দিয়ে পূরণ করুন
-
ম্যাট্রিক্স - 1-এর সারি গণনা 0 থেকে সারিতে থাকা i জন্য, করুন
-
j এর জন্য রেঞ্জ 0 থেকে ম্যাট্রিক্সের কলাম সংখ্যা - 1, করুন
-
যদি ম্যাট্রিক্স[i, j] 1 এর মত হয়, তাহলে
-
r[i] :=সত্য, c[j] :=সত্য
-
-
-
-
ct :=0
-
ম্যাট্রিক্স - 1-এর সারি গণনা 0 থেকে সারিতে থাকা i জন্য, করুন
-
j এর জন্য রেঞ্জ 0 থেকে ম্যাট্রিক্সের কলাম সংখ্যা - 1, করুন
-
যদি r[i] False হয় এবং c[j] False হয়, তাহলে
-
ct :=ct + 1
-
-
-
-
ct
ফেরত দিন
আরও ভালভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি:
উদাহরণ
class Solution: def solve(self, matrix): r = [False for i in range(len(matrix))] c = [False for i in range(len(matrix[0]))] for i in range(len(matrix)): for j in range(len(matrix[0])): if matrix[i][j] == 1: r[i] = True c[j] = True ct = 0 for i in range(len(matrix)): for j in range(len(matrix[0])): if r[i] == False and c[j] == False: ct += 1 return ct ob = Solution() matrix = [ [1, 1, 0], [0, 0, 0], [0, 0, 0] ] print(ob.solve(matrix))
ইনপুট
[ [1, 1, 0], [0, 0, 0], [0, 0, 0] ]
আউটপুট
2