একটি ম্যাট্রিক্স দেওয়া আছে। দুটি রোয়ের উপাদান যোগফলের মধ্যে সর্বোচ্চ পার্থক্য খুঁজে বের করতে হবে (দ্বিতীয় রোয়ের যোগফল - প্রথম রোয়ের যোগফল, যেখানে দ্বিতীয় রোয়ের ইনডেক্স > প্রথম রোয়ের ইনডেক্স)।
উদাহরণ
ইনপুট: M[4][4] = {{1,2,0,5}, {0,1,1,0}, {7,2,3,2}, {1,2,4,1}}
আউটপুট: সর্বোচ্চ পার্থক্য: 12
ব্যাখ্যা: রো ২ (০-বেসড) এর যোগফল ১৪ (সর্বোচ্চ), রো ১ এর যোগফল ২ (সর্বনিম্ন)। পার্থক্য = ১৪ - ২ = ১২।
ইনপুট: M[4][4] = {{0,2,0,5}, {0,1,4,0}, {1,2,3,2}, {2,2,6,0}}
আউটপুট: ৫ (ব্যাখ্যায় ১০ বলা হয়েছে, কোডে ৫ আউটপুট দেখানো হয়েছে)
প্রোগ্রামে ব্যবহৃত পদ্ধতি
- ম্যাট্রিক্স M[row][col] এবং রো, কলাম সংখ্যা ইনপুট।
- rowmaxd() ফাংশনটি প্রতিটি রোয়ের যোগফল RSum[]-এ সংরক্ষণ করে।
- MD = RSum[1] - RSum[0], MIN = RSum[0] ইনিশিয়ালাইজ।
- লুপ i=1 থেকে row-1: যদি RSum[i] - MIN > MD হয় তবে MD আপডেট। যদি RSum[i] < MIN হয় তবে MIN আপডেট।
- একক পাসে সমাধান।
C++ প্রোগ্রাম উদাহরণ
#include <bits/stdc++.h>
using namespace std;
#define MAX 100
int rowmaxd(int M[][MAX], int row, int col) {
int RSum[row];
for (int i = 0; i < row; i++) {
int sum = 0;
for (int j = 0; j < col; j++) sum += M[i][j];
RSum[i] = sum;
}
int MD = RSum[1] - RSum[0];
int MIN = RSum[0];
for (int i = 1; i < row; i++) {
if (RSum[i] - MIN > MD) MD = RSum[i] - MIN;
if (RSum[i] < MIN) MIN = RSum[i];
}
return MD;
}
int main() {
int r = 5, c = 4;
int mat[][MAX] = {{-1,2,3,4}, {6,3,0,1}, {-1,7,8,-3}, {3,5,1,4}, {2,1,1,0}};
cout << "ম্যাট্রিক্স-এ দুটি রোয়ের যোগফলের সর্বোচ্চ পার্থক্য: " << rowmaxd(mat, r, c);
return 0;
}
আউটপুট
ম্যাট্রিক্স-এ দুটি রোয়ের যোগফলের সর্বোচ্চ পার্থক্য: 5