C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++の正方行列の最大値と最小値


問題の説明

次数n*nの正方行列が与えられた場合、行列から最大値と最小値を見つけます

与えられた行列が-

の場合
{{15, 17, 19}, {5, 1, 7}, {14, 5, 16}}
then
Minimum number is 1 and maximum number is 19

アルゴリズム

  • マトリックスから2つの要素を選択します。1つはマトリックスの行の先頭から、もう1つはマトリックスの同じ行の末尾から選択します。
  • それらを比較し、次にそれらの小さい方をマトリックスの最小値と比較し、大きい方をマトリックスの最大値と比較します。
  • 2つの要素については、3つの比較が必要であることがわかります。したがって、マトリックス全体をトラバースするには、合計3 / 2n 2 が必要です。 比較

例を見てみましょう-

#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] > matri[i][n - j - 1]) {
            if (min > matrixi][n - j - 1]) {
               min = marix[i][n - j -1];
            }
            if (max < matrixi][j]) {
               max = marix[i][j];
            }
         } else {
            if (min > matrixi][j]) {
               min = marix[i][j];
            }
            if (max < matrixi][n - j - 1]) {
               max = marix[i][n - j - 1];
            }
         }
      }
   }
   cout << "Maximum = " << max << ", Minimu = " << 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

  1. C++で指定された数kで割り切れるリンクリストの最大要素と最小要素

    リンクリストは、要素がポインタを介してリンクされている線形データ構造です。リンクリストの各要素またはノードには、データ部分とリンクがあります。または、次の要素へのポインタを順番に言うことができます。要素は、メモリ内で連続していない場所を取ることができます。 データ部分と次の要素へのリンクがある単一リンクリストが与えられます。もう1つの入力は数値Kです。タスクは、数値Kで割り切れるリンクリストの最大要素と最小要素を見つけることです。線形リンクリストは、一方向にのみ移動できます。各ノードで、データ部分の分割可能性をKで確認します。その数がこれまでに見つかった最大値または最小値である場合は、

  2. C++での単一リンクリストの最小および最大素数。

    問題の説明 n個の正の整数のリンクリストが与えられます。最小値と最大値を持つ素数を見つける必要があります。 指定されたリストが-の場合 10 -> 4 -> 1 -> 12 -> 13 -> 7 -> 6 -> 2 -> 27 -> 33 then minimum prime number is 2 and maximum prime number is 13 アルゴリズム 1. Find maximum number from given number. Let us call it maxNumber 2. Generate pri