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

C++の行列の変更された平均よりも大きい要素の数


行列の修正平均は次のように定義されます...

(sum(row-wise min)+ sum(column-wise max))/(row_size + column_size)

例を見てみましょう。

1 2 3
4 5 6
7 8 9

平均=(sum(1 + 4 + 7)+ sum(7 + 8 + 9))/(3 + 3)

最初に平均を見つけてから、平均よりも大きい要素の数を数える必要があります。

上記の例をとると、カウントとして3が得られます。 6である平均よりも大きい3つの要素があります。

アルゴリズム

  • マトリックスを初期化します。

  • 行ごとの最小要素の合計を求めます。

  • 列ごとの最大要素の合計を求めます。

  • 次に、上記の式で平均を求めます。

  • ここで、行列の平均よりも大きい要素の数を数えます。

実装

以下は、C++での上記のアルゴリズムの実装です

#include <bits/stdc++.h>
using namespace std;
#define m 3
#define n 3
int getElementCountGreaterThanMean(int matrix[][n]) {
   int rowSum = 0;
   for (int i = 0; i < m; i++) {
      int min = matrix[i][0];
      for (int j = 1; j < n; j++) {
         if (matrix[i][j] < min){
            min = matrix[i][j];
         }
      }
      rowSum += min;
   }
   int colSum = 0;
   for (int i = 0; i < n; i++) {
      int max = matrix[0][i];
      for (int j = 1; j < m; j++) {
         if (max < matrix[j][i]) {
            max = matrix[j][i];
         }
      }
      colSum += max;
   }
   int mean = (rowSum + colSum) / (m + n);
   int count = 0;
   for (int i = 0; i < m; i++) {
      for (int j = 0; j < n; j++) {
         if (mean < matrix[i][j]) {
            count++;
         }
      }
   }
   return count;
}
int main() {
   int matrix[m][n] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
   cout << getElementCountGreaterThanMean(matrix) << endl;
   return 0;
}

出力

上記のコードを実行すると、次の結果が得られます。

3

  1. C ++では、すべての要素がk以上になるまで配列の要素を追加します。

    配列 −配列は、同じデータ型の要素のコンテナであり、その要素のインデックスは0です。 この問題では、整数の配列を使用します。そして、すべての要素が指定された数より大きいかどうかを確認します。ここでは、配列のすべての要素が指定された数k以上であるかどうかを確認します。そうでない場合は、配列の2つの最小要素を追加し、この合計を1つの要素として扱います。次に、新しいアレイの同じ条件を再度確認します。条件が真であることが判明した場合、合計が実行された回数が返されます。 Array = { 2, 6,3,12, 7} K = 5 Output : 1 説明 −最初に、すべての要素がkより大きいかどう

  2. C++のCHAR_BIT

    CHAR_BITは、charのビット数です。これは、C++言語の「limits.h」ヘッダーファイルで宣言されています。 1バイトあたり8ビットです。 これがC++言語のCHAR_BITの例です 例 #include <bits/stdc++.h> using namespace std; int main() {    int x = 28;    int a = CHAR_BIT*sizeof(x);    stack<bool> s;    cout << "T