Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

จำนวนองค์ประกอบที่มากกว่าค่าเฉลี่ยปรับแล้วในเมทริกซ์ด้วย C++

โจทย์

ค่าเฉลี่ยปรับแล้ว (modified mean) ของเมทริกซ์นิยามว่า:

(ผลรวมของค่าต่ำสุดแต่ละแถว + ผลรวมของค่าสูงสุดแต่ละคอลัมน์) / (จำนวนแถว + จำนวนคอลัมน์)

มาดูตัวอย่างกัน

1 2 3
4 5 6
7 8 9

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

เราต้องหาค่าเฉลี่ยก่อน แล้วจึงนับจำนวนองค์ประกอบที่มากกว่าค่าเฉลี่ย

จากตัวอย่างข้างต้น จะได้จำนวน 3 ตัว มี 3 องค์ประกอบที่มากกว่าค่าเฉลี่ยซึ่งคือ 6

อัลกอริธึม

  • กำหนดค่าเมทริกซ์
  • หาผลรวมของค่าต่ำสุดแต่ละแถว
  • หาผลรวมของค่าสูงสุดแต่ละคอลัมน์
  • คำนวณค่าเฉลี่ยด้วยสูตรดังกล่าว
  • นับจำนวนองค์ประกอบที่มากกว่าค่าเฉลี่ยของเมทริกซ์

การนำไปใช้งาน

ต่อไปนี้เป็นการนำไปใช้งานของอัลกอริธึมข้างต้นใน 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