Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค่าสูงสุดและต่ำสุดใน Square Matrix ใน C++


โจทย์

ได้รับ Square Matrix ขนาด n×n หาค่าสูงสุดและต่ำสุดจากเมทริกซ์

ตัวอย่าง

ถ้าเมทริกซ์ที่ให้มาคือ

{{15, 17, 19}, {5, 1, 7}, {14, 5, 16}}
ค่าต่ำสุดคือ 1 และค่าสูงสุดคือ 19

อัลกอริทึม

  • เลือกสององค์ประกอบจากเมทริกซ์ หนึ่งจากต้นแถว อีกหนึ่งจากท้ายแถวเดียวกัน
  • เปรียบเทียบพวกเขา และต่อมาเปรียบเทียบค่าที่น้อยกว่ากับค่าต่ำสุดของเมทริกซ์ และค่าที่มากกว่ากับค่าสูงสุดของเมทริกซ์
  • สำหรับสององค์ประกอบต้องการ 3 ครั้งการเปรียบเทียบ ดังนั้นสำหรับการท่องทั้งเมทริกซ์ ต้องการ 3/2 n² ครั้งการเปรียบเทียบ

ตัวอย่างโค้ด

#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