একটি ২D বাইনারি ম্যাট্রিক্স দেওয়া আছে। শুধু ১ ধারণকারী সব বর্গাকার সাবম্যাট্রিক্সের মোট সংখ্যা বের করতে হবে।
সমস্যা উদাহরণ
ইনপুট ম্যাট্রিক্স:
0 1 1 0 1 1
আউটপুট: 5
ব্যাখ্যা: একটা ২×২ বর্গ এবং চারটা ১×১ বর্গ = মোট ৫টি।
সমাধানের পদ্ধতি (ডাইনামিক প্রোগ্রামিং)
- যদি ম্যাট্রিক্স খালি হলে ০ রিটার্ন করুন
c = 0(কাউন্টার)- প্রতিটি সেল (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 += tempmat[i][j] = temp(ইন-প্লেস আপডেট)
- যদি
- যদি
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]])। সঠিক ইনপুট উপরে দেওয়া আছে।