ধরুন আমাদের একটি 2D ম্যাট্রিক্স আছে যেখানে প্রতিটি সেল ম্যাট্রিক্স[r, c] সেই ঘরে উপস্থিত কয়েনের সংখ্যাকে প্রতিনিধিত্ব করে। যখন আমরা ম্যাট্রিক্স[r, c] থেকে কয়েন তুলব, তখন সারির সমস্ত কয়েন (r - 1) এবং (r + 1) অদৃশ্য হয়ে যাবে, সেইসাথে ম্যাট্রিক্স[r, c + 1] এবং দুটি কক্ষের কয়েনগুলি অদৃশ্য হয়ে যাবে। ম্যাট্রিক্স[r, c - 1]। আমরা সর্বোচ্চ কয়েন সংগ্রহ করতে পারি তা খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুট মত হয়
2 | 8 | 7 | 6 |
10 | 10 | 4 | 2 |
5 | 9 | 2 | 3 |
তাহলে আউটপুট হবে 26 কারণ আমরা কয়েন 8, 6, এবং 9 এবং 3 দিয়ে সেল বাছাই করতে পারি, তাই মোট হল 26।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- একটি ফাংশন সংজ্ঞায়িত করুন getmax()। এটি arr লাগবে
- prev_max :=0
- curr_max :=0
- res :=0
- আরের প্রতিটি সংখ্যার জন্য, করুন
- তাপ :=curr_max
- curr_max :=num + prev_max
- prev_max :=temp এর সর্বোচ্চ এবং prev_max
- res :=res এর সর্বোচ্চ এবং curr_max
- রিটার্ন রিটার্ন
- প্রধান পদ্ধতি থেকে নিম্নলিখিতগুলি করুন -
- যদি ম্যাট্রিক্স খালি হয়, তাহলে
- রিটার্ন 0
- m :=ম্যাট্রিক্সের সারি গণনা
- n :=ম্যাট্রিক্সের কলাম গণনা
- row_sum :=m আকারের একটি অ্যারে এবং 0 দিয়ে পূরণ করুন
- আমি 0 থেকে m - 1 রেঞ্জের জন্য, কর
- row_sum[i] :=getmax(matrix[i])
- রিটার্ন getmax(row_sum)
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def getmax(arr):prev_max, curr_max =0, 0 res =0 সংখ্যার জন্য arr:temp =curr_max curr_max =num + prev_max prev_max =max(temp, prev_max) res =max(res, curr_max) রিটার্ন resdef সমাধান (ম্যাট্রিক্স):ম্যাট্রিক্স না হলে:0 মি, n =লেন(ম্যাট্রিক্স), লেন(ম্যাট্রিক্স[0]) row_sum =[0 এর জন্য _ রেঞ্জ(m)] এর জন্য i রেঞ্জ(m):row_sum[i ] =getmax(matrix[i]) getmax(row_sum)matrix =[ [ [2, 8, 7, 6], [10, 10, 4, 2], [5, 9, 2, 3]]মুদ্রণ(সমাধান করুন) (ম্যাট্রিক্স))
ইনপুট
<প্রে>[[2, 8, 7, 6],[10, 10, 4, 2],[5, 9, 2, 3]]আউটপুট
26