使用 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

更新時間:18-Dec-2019

82 瀏覽量

開啟您的 職業 生涯

透過完成課程獲得認證

開始
廣告