এই সমস্যাটিতে, আমাদেরকে একটি দ্বি-মাত্রিক অ্যারে অ্যারে দেওয়া হয়েছে[][]। আমাদের কাজ হল C++ এ প্রদত্ত ম্যাট্রিক্সের যেকোনো সাব-ম্যাট্রিক্সের জন্য সম্ভাব্য সর্বাধিক ট্রেস খুঁজে বের করার জন্য একটি প্রোগ্রাম তৈরি করা।
সমস্যা বর্ণনা
আমাদের যেকোনো সাব-ম্যাট্রিক্সের জন্য সর্বাধিক ট্রেস খুঁজে বের করতে হবে। ট্রেস হল ম্যাট্রিক্সের প্রধান কর্ণের উপাদানগুলির সমষ্টি।
সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,
ইনপুট
arr[][] ={{-2, 5, 3},
{1, 6, 2},
{4, 3, 9}} আউটপুট
15
ব্যাখ্যা
For the sub-array: {1, 6}
{9, 3} সমাধান পদ্ধতি
একটি সহজ সমাধান হল 2-D অ্যারের প্রধান কর্ণের উপাদান ব্যবহার করে সর্বাধিক যোগফল খুঁজে বের করা। ট্রেসটি সর্বাধিক সাব্যারে যোগফল দ্বারা দেওয়া হয়৷
৷উদাহরণ
আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম,
#include <iostream>
using namespace std;
#define row 3
#define col 3
int CalcMaxTraceSubMat(int mat[row][col]){
int maxtraceSum = 0, r, c, traceSum;
for (int i = 0; i < row; i++){
for (int j = 0; j < col; j++){
r = i, c = j, traceSum = 0;
while (r < row && c < col){
traceSum += mat[r][c];
r++;
c++;
maxtraceSum = max(traceSum, maxtraceSum);
}
}
}
return maxtraceSum;
}
int main() {
int mat[row][col] = { {-2, 5, 6},
{1, 6, 2},
{4, 3, 9} };
cout<<"The maximum trace possible for any submatrix is "<<CalcMaxTraceSubMat(mat);
return 0;
} আউটপুট
The maximum trace possible for any submatrix is 15