समस्या कथन
n*n क्रम का एक वर्ग मैट्रिक्स दिया गया है, मैट्रिक्स से अधिकतम और न्यूनतम ढूंढें।
उदाहरण
यदि दिया गया मैट्रिक्स है:
{{15, 17, 19}, {5, 1, 7}, {14, 5, 16}} तब न्यूनतम संख्या 1 है और अधिकतम संख्या 19 है।
एल्गोरिदम
- मैट्रिक्स की एक पंक्ति की शुरुआत से एक तत्व और उसी पंक्ति के अंत से दूसरा तत्व चुनें।
- उनकी तुलना करें और फिर छोटे की तुलना मैट्रिक्स के न्यूनतम से और बड़े की तुलना मैट्रिक्स के अधिकतम से करें।
- हम देख सकते हैं कि दो तत्वों के लिए हमें 3 तुलना की आवश्यकता होती है, इसलिए पूरे मैट्रिक्स को पार करने के लिए हमें कुल 3/2 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