সমস্যা বিবরণ
n*n অর্ডারের একটি স্কয়ার ম্যাট্রিক্স দেওয়া আছে, ম্যাট্রিক্স থেকে সর্বোচ্চ এবং ন্যূনতম মান বের করুন।
উদাহরণ
যদি দেওয়া ম্যাট্রিক্স হয়:
{{15, 17, 19}, {5, 1, 7}, {14, 5, 16}}
তাহলে ন্যূনতম সংখ্যা হল ১ এবং সর্বোচ্চ সংখ্যা হল ১৯
অ্যালগরিদম
- ম্যাট্রিক্স থেকে দুটি উপাদান বেছে নিন, একটি রোয়ের শুরু থেকে আরেকটি একই রোয়ের শেষ থেকে।
- তুলনা করুন এবং তারপর ছোটটিকে ম্যাট্রিক্সের মিনিমামের সাথে এবং বড়টিকে ম্যাট্রিক্সের ম্যাক্সিমামের সাথে তুলনা করুন।
- দুই উপাদানের জন্য ৩টি তুলনা লাগে, তাই পুরো ম্যাট্রিক্স ট্রভার্স করার জন্য মোট ৩/২ n2 তুলনা লাগবে।
উদাহরণ
#include <bits/stdc++.h>
#define MAX 200
using namespace std;
void getMinMax(int matrix[MAX][MAX], int n) {
int min = INT_MAX;
int max = INT_MIN;
for (int i = 0; i < n; ++i) {
for (int j = 0; j <= n / 2; ++j) {
if (matrix[i][j] > matrix[i][n - j - 1]) {
if (min > matrix[i][n - j - 1]) {
min = matrix[i][n - j - 1];
}
if (max < matrix[i][j]) {
max = matrix[i][j];
}
} else {
if (min > matrix[i][j]) {
min = matrix[i][j];
}
if (max < matrix[i][n - j - 1]) {
max = matrix[i][n - j - 1];
}
}
}
}
cout << "Maximum = " << max << ", Minimum = " << min << endl;
}
int main() {
int matrix[MAX][MAX] = { {15, 17, 19}, {5, 1, 7}, {14, 5, 16} };
getMinMax(matrix, 3);
return 0;
}
আউটপুট
Maximum = 19, Minimum = 1