ধরুন আমাদের একটি বাইনারি ম্যাট্রিক্স আছে, আমাদের ম্যাট্রিক্সে দ্বীপের সংখ্যা বের করতে হবে। এখানে 1 হল জমির জন্য এবং 0 হল জলের জন্য, তাই একটি দ্বীপ হল 1s-এর একটি দল যা প্রতিবেশী এবং যার পরিধি জল দ্বারা বেষ্টিত৷ এখানে আমরা বিবেচনা করছি প্রতিবেশীরা শুধুমাত্র অনুভূমিক বা উল্লম্ব হতে পারে, তির্যক নয়।
সুতরাং, যদি ইনপুট মত হয়
1 | 0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 | 0 |
0 | 1 | 1 | 0 | 0 |
0 | 0 | 0 | 0 | 0 |
1 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 0 | 1 |
তাহলে আউটপুট হবে 4.
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- একটি ফাংশন explore() সংজ্ঞায়িত করুন। এটি সারি, কল, ম্যাট্রিক্স নেবে
- যদি সারি এবং কল ম্যাট্রিক্সের পরিসরে না হয় বা ম্যাট্রিক্স[সারি, কল] 0 হয়, তাহলে
- প্রত্যাবর্তন
- ম্যাট্রিক্স[সারি, কল] :=0
- অন্বেষণ করুন(সারি + 1, কল, ম্যাট্রিক্স)
- অন্বেষণ করুন(সারি - 1, কল, ম্যাট্রিক্স)
- অন্বেষণ করুন(সারি, কল + 1, ম্যাট্রিক্স)
- অন্বেষণ করুন(সারি, কল - 1, ম্যাট্রিক্স)
- প্রধান পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন -
- যদি ম্যাট্রিক্স শূন্য হয়, তাহলে
- রিটার্ন 0
- দ্বীপসমূহ :=0
- পরিসীমা 0 থেকে ম্যাট্রিক্সের সারি গণনার জন্য, করুন
- পরিসীমা 0 থেকে ম্যাট্রিক্সের কলাম সংখ্যার জন্য, করুন
- যদি ম্যাট্রিক্স[সারি, কল] 1 এর মত হয়, তাহলে
- দ্বীপ :=দ্বীপ + 1
- অন্বেষণ (সারি, কল, ম্যাট্রিক্স)
- যদি ম্যাট্রিক্স[সারি, কল] 1 এর মত হয়, তাহলে
- পরিসীমা 0 থেকে ম্যাট্রিক্সের কলাম সংখ্যার জন্য, করুন
- প্রত্যাবর্তন দ্বীপ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
শ্রেণীর সমাধান:def explore(self, row, col, matrix):if ( row <0 or col <0 or row> len(matrix) - 1 or col> len (matrix[0]) - 1 বা matrix [row][col] ==0):রিটার্ন ম্যাট্রিক্স[row][col] =0 self.explore(row + 1, col, matrix) self.explore(row - 1, col, matrix) self.explore(row , col + 1, matrix) self.explore(row, col - 1, matrix) def solve(self, matrix):ম্যাট্রিক্স না হলে:রেঞ্জের সারি (len(matrix)) এর জন্য 0 islands =0 ফেরত দিন:col in এর জন্য range(len(matrix[0]):if matrix[row][col] ==1:islands +=1 self.explore(row, col, matrix) return islandsob =Solution() matrix =[ [1, 0] , 1, 0, 0], [0, 0, 1, 0, 0], [0, 1, 1, 0, 0], [0, 0, 0, 0, 0], [1, 1, 0] , 1, 1], [1, 1, 1, 0, 1]]মুদ্রণ(ob.solve(matrix))
ইনপুট
<প্রে>[ [1, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0, 1, 1, 0, 0], [0, 0, 0, 0, 0] ], [1, 1, 0, 1, 1], [1, 1, 1, 0, 1]]আউটপুট
4