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

หาคู่ที่มีความต่างสูงสุดในคอลัมน์ใดคอลัมน์หนึ่งของแมทริกซ์ใน C++

สมมติว่ามีแมทริกซ์ขนาด NxN เราต้องหาคู่ขององค์ประกอบที่สร้างความต่างสูงสุดจากคอลัมน์ใดคอลัมน์หนึ่งของแมทริกซ์ ดังนั้นถ้าแมทริกซ์เป็นดังนี้:

123
535
967

ผลลัพธ์จะเป็น 8 คู่นั้นคือ (1, 9) จากคอลัมน์ 0

แนวคิดง่ายๆ คือเราต้องหาความต่างระหว่างค่าสูงสุดและต่ำสุดของแต่ละคอลัมน์ จากนั้นคืนค่าความต่างสูงสุด

ตัวอย่าง

#include <iostream> 
#define N 5 
using namespace std; 

int maxVal(int x, int y) {
    return (x > y) ? x : y;
}

int minVal(int x, int y) {
    return (x > y) ? y : x;
}

int colMaxDiff(int mat[N][N]) {
    int diff = INT_MIN;
    for (int i = 0; i < N; i++) {
        int max_val = mat[0][i], min_val = mat[0][i];
        for (int j = 1; j < N; j++) {
            max_val = maxVal(max_val, mat[j][i]);
            min_val = minVal(min_val, mat[j][i]);
        }
        diff = maxVal(diff, max_val - min_val);
    }
    return diff;
}

int main() {
    int mat[N][N] = {{ 1, 2, 3, 4, 5 }, { 5, 3, 5, 4, 0 }, { 5, 6, 7, 8, 9 }, { 0, 6, 3, 4, 12 }, { 9, 7, 12, 4, 3 }};
    cout << "Max difference : " << colMaxDiff(mat) << endl;
}

ผลลัพธ์

Max difference : 12