কম্পিউটার টিউটোরিয়াল

পাইথনে বাইনারি ম্যাট্রিক্স-এ সব ১ থাকা বর্গাকার সাবম্যাট্রিক্সের সংখ্যা বের করার প্রোগ্রাম

একটি ২D বাইনারি ম্যাট্রিক্স দেওয়া আছে। শুধু ১ ধারণকারী সব বর্গাকার সাবম্যাট্রিক্সের মোট সংখ্যা বের করতে হবে।

সমস্যা উদাহরণ

ইনপুট ম্যাট্রিক্স:

0 1 1
0 1 1

আউটপুট: 5

ব্যাখ্যা: একটা ২×২ বর্গ এবং চারটা ১×১ বর্গ = মোট ৫টি।

সমাধানের পদ্ধতি (ডাইনামিক প্রোগ্রামিং)

  1. যদি ম্যাট্রিক্স খালি হলে ০ রিটার্ন করুন
  2. c = 0 (কাউন্টার)
  3. প্রতিটি সেল (i, j) এর জন্য:
    • যদি mat[i][j] == 1:
      • যদি i == 0 or j == 0: c += 1 (প্রথম সারি/কলামে ১×১ বর্গ)
      • অন্যথায়:
        • temp = min(mat[i-1][j-1], mat[i][j-1], mat[i-1][j]) + mat[i][j]
        • c += temp
        • mat[i][j] = temp (ইন-প্লেস আপডেট)
  4. c রিটার্ন করুন

পাইথন কোড

def solve(mat):
    if mat == []:
        return 0
    c = 0
    for i in range(len(mat)):
        for j in range(len(mat[0])):
            if mat[i][j] == 1:
                if i == 0 or j == 0:
                    c += 1
                else:
                    temp = (min(mat[i - 1][j - 1], mat[i][j - 1], mat[i - 1][j]) + mat[i][j])
                    c += temp
                    mat[i][j] = temp
    return c

matrix = [
    [0, 1, 1],
    [0, 1, 1]
]
print(solve(matrix))  # আউটপুট: 5

টেস্ট কেস

ইনপুট: [[0, 1, 1], [0, 1, 1]]
আউটপুট: 5

নোট: প্রদত্ত উদাহরণে ইনপুট ভুল দেখানো হয়েছে ([[2, 6],[3, 4],[4, 7],[5, 5]])। সঠিক ইনপুট উপরে দেওয়া আছে।

  1. পাইথনে দِيয়ে गये এজগুলো অন্তর্ভুক্ত করে অনন্য পথের সংখ্যা গণনার প্রোগ্রাম

  2. পাইথনে ম্যাট্রিক্সে ঘিরা দ্বীপের সংখ্যা গণনা করার প্রোগ্রাম

  3. কনসিকিউটিভ ১ ছাড়া বাইনারি স্ট্রিংয়ের সংখ্যা গণনা করার পাইথন প্রোগ্রাম

  4. পাইথনে একটি সংখ্যার টোটাল বিট গণনা করার প্রোগ্রাম