Computer >> Máy Tính >  >> Lập trình >> C ++

Tối đa và Tối thiểu trong ma trận vuông trong C ++

Tuyên bố vấn đề

Cho ma trận vuông bậc n * n, tìm giá trị lớn nhất và nhỏ nhất từ ​​ma trận

Ví dụ

Nếu ma trận đã cho là -

{{15, 17, 19}, {5, 1, 7}, {14, 5, 16}}
then
Minimum number is 1 and maximum number is 19

Thuật toán

  • Chọn hai phần tử từ ma trận một từ đầu hàng của ma trận khác từ cuối cùng một hàng của ma trận
  • So sánh chúng và tiếp theo so sánh chúng nhỏ hơn với giá trị nhỏ nhất của ma trận và lớn hơn chúng với giá trị lớn nhất của ma trận.
  • Chúng ta có thể thấy rằng đối với hai phần tử, chúng ta cần 3 so sánh vì vậy để duyệt toàn bộ ma trận, chúng ta cần tổng 3 / 2n 2 so sánh

Ví dụ

Bây giờ chúng ta hãy xem một ví dụ -

#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] > matri[i][n - j - 1]) {
            if (min > matrixi][n - j - 1]) {
               min = marix[i][n - j -1];
            }
            if (max < matrixi][j]) {
               max = marix[i][j];
            }
         } else {
            if (min > matrixi][j]) {
               min = marix[i][j];
            }
            if (max < matrixi][n - j - 1]) {
               max = marix[i][n - j - 1];
            }
         }
      }
   }
   cout << "Maximum = " << max << ", Minimu = " << min << endl;
}
int main() {
   int matrix[MAX][MAX] = { {15, 17, 19}, {5, 1, 7}, {14, 5, 16} };
   getMinMax(matrix, 3);
   return 0;
}

Đầu ra

Maximum = 19, Minimum = 1