在C ++中的矩阵的任何列中查找具有最大差异的对

假设我们有一个矩阵或阶数NxN。我们必须找到一对与矩阵的任何列形成最大差异的元素。所以如果矩阵像-

123
535
967

因此输出将为8。因为该对是列0中的(1、9)。

这个想法很简单,我们必须简单地找到每一列的最大和最小元素之间的差异。然后返回最大差。

示例

#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

以上是 在C ++中的矩阵的任何列中查找具有最大差异的对 的全部内容, 来源链接: utcz.com/z/316114.html

回到顶部