ধরুন আমাদের একটি বাইনারি ম্যাট্রিক্স আছে, আমাদের সেই প্রদত্ত ম্যাট্রিক্সে 1s এর বৃহত্তম বর্গ বের করতে হবে।
সুতরাং, যদি ইনপুট মত হয়
1 | 0 | 0 | 0 | 0 | 1 | 1 |
0 | 0 | 0 | 0 | 0 | 1 | 1 |
0 | 1 | 1 | 1 | 1 | 0 | 0 |
0 | 1 | 1 | 1 | 1 | 0 | 0 |
0 | 1 | 1 | 1 | 1 | 0 | 0 |
0 | 1 | 1 | 1 | 1 | 0 | 0 |
তাহলে আউটপুট হবে 16।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- res :=0
- আমি 0 থেকে ম্যাট্রিক্সের আকারের মধ্যে,
- করুন
- res :=সর্বাধিক রেস এবং ম্যাট্রিক্স[i, 0]
- আমি 0 থেকে ম্যাট্রিক্সের মাপ[0] এর মধ্যে,
- করুন
- res :=সর্বাধিক রেস এবং ম্যাট্রিক্স[0, i]
- আমি রেঞ্জ 1 থেকে ম্যাট্রিক্সের সারি গণনার জন্য, কর
- j এর জন্য রেঞ্জ 1 থেকে ম্যাট্রিক্সের কলাম কাউন্ট, করুন
- যদি ম্যাট্রিক্স[i, j] 1 এর মত হয়, তাহলে
- ম্যাট্রিক্স[i, j] =সর্বনিম্ন (ম্যাট্রিক্স[i - 1, j], ম্যাট্রিক্স[i - 1, j - 1] এবং ম্যাট্রিক্স[i, j - 1]) + 1
- res =সর্বাধিক রেস এবং ম্যাট্রিক্স[i, j]
- যদি ম্যাট্রিক্স[i, j] 1 এর মত হয়, তাহলে
- j এর জন্য রেঞ্জ 1 থেকে ম্যাট্রিক্সের কলাম কাউন্ট, করুন
- রিটার্ন ^2
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
শ্রেণির সমাধান:def solve(self, matrix):res =0 for i in range(len(matrix)):res =max(res, matrix[i][0]) in range(len(matrix) এর জন্য [0])):res =max(res, matrix[0][i]) in range(1, len(matrix)) এর জন্য:j এর জন্য রেঞ্জ(1, len(matrix[0])):যদি ম্যাট্রিক্স[i][j] ==1:ম্যাট্রিক্স[i][j] =মিনিট(ম্যাট্রিক্স[i - 1][j], ম্যাট্রিক্স[i - 1][j - 1], ম্যাট্রিক্স[i][j - 1]) + 1 res =max(res, matrix[i][j]) রিটার্ন res * resob =Solution()matrix =[ [ [1, 0, 0, 0, 0, 1, 1], [0, 0 , 0, 0, 0, 1, 1], [0, 1, 1, 1, 1, 0, 0], [0, 1, 1, 1, 1, 0, 0], [0, 1, 1 , 1, 1, 0, 0], [0, 1, 1, 1, 1, 0, 0]]মুদ্রণ(ob.solve(matrix))
ইনপুট
<প্রি>ম্যাট্রিক্স =[ [ [1, 0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 0, 1, 1], [0, 1, 1, 1, 1, 0 , 0], [0, 1, 1, 1, 1, 0, 0], [0, 1, 1, 1, 1, 0, 0], [0, 1, 1, 1, 1, 0, 0] ]আউটপুট
16