Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tìm cặp phần tử chênh lệch lớn nhất trong cùng cột của ma trận trong C++


Cho ma trận NxN, tìm cặp phần tử trong cùng cột có chênh lệch lớn nhất. Ví dụ ma trận 3x3: cột 0 có (1,9) chênh lệch 8.

Tìm max và min mỗi cột, chênh lệch max-min, lấy max của tất cả cột.

Ví dụ

#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; }

Kết quả

Max difference : 12