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

Đếm số phần tử lớn hơn trung bình sửa đổi của ma trận C++

Trung bình sửa đổi của ma trận được định nghĩa như sau:

(tổng min hàng + tổng max cột) / (số hàng + số cột)

Chúng ta cần tính giá trị trung bình này, sau đó đếm số phần tử trong ma trận lớn hơn giá trị đó.

Ví dụ

Ma trận 3x3:

1 2 3
4 5 6
7 8 9
  • Min hàng: 1, 4, 7 → Tổng = 12
  • Max cột: 7, 8, 9 → Tổng = 24
  • Trung bình = (12 + 24) / (3 + 3) = 6
  • Các phần tử > 6: 7, 8, 9 → Kết quả = 3

Thuật toán

  • Khởi tạo ma trận.
  • Tính tổng các phần tử nhỏ nhất theo hàng.
  • Tính tổng các phần tử lớn nhất theo cột.
  • Tính trung bình sửa đổi theo công thức.
  • Đếm số phần tử > trung bình.

Triển khai 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 minVal = matrix[i][0];
        for (int j = 1; j < N; j++)
            if (matrix[i][j] < minVal) minVal = matrix[i][j];
        rowSum += minVal;
    }

    int colSum = 0;
    for (int j = 0; j < N; j++) {
        int maxVal = matrix[0][j];
        for (int i = 1; i < M; i++)
            if (matrix[i][j] > maxVal) maxVal = matrix[i][j];
        colSum += maxVal;
    }

    int mean = (rowSum + colSum) / (M + N);
    int count = 0;
    for (int i = 0; i < M; i++)
        for (int j = 0; j < N; j++)
            if (matrix[i][j] > mean) count++;

    return count;
}

int main() {
    int matrix[M][N] = {{1,2,3}, {4,5,6}, {7,8,9}};
    cout << getElementCountGreaterThanMean(matrix) << endl;
    return 0;
}

Kết quả

3