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

หาคอลัมน์ที่มีผลรวมสูงสุดในเมทริกซ์ด้วย C++

สมมติว่าเรามีเมทริกซ์ขนาด M x N เราต้องหาคอลัมน์ที่มีผลรวมสูงสุด (Maximum Sum) ในโปรแกรมนี้ เราจะไม่ใช้วิธีอะไรที่มีเทคนิคพิเศษ เราจะท่องอาร์เรย์แบบคอลัมน์ (Column-wise) แล้วหาผลรวมของแต่ละคอลัมน์ ถ้าผลรวมเป็นค่าสูงสุด ให้พิมพ์ผลรวมและดัชนีคอลัมน์

ตัวอย่างโค้ด

#include <iostream>
#define M 5
#define N 5
using namespace std;

int colSum(int colIndex, int mat[M][N]) {
    int sum = 0;
    for (int i = 0; i < M; i++) {
        sum += mat[i][colIndex];
    }
    return sum;
}

void maxColumnSum(int mat[M][N]) {
    int index = -1;
    int maxSum = INT_MIN;
    for (int i = 0; i < N; i++) {
        int sum = colSum(i, mat);
        if (sum > maxSum) {
            maxSum = sum;
            index = i;
        }
    }
    cout << "Index: " << index << ", Column Sum: " << maxSum;
}

int main() {
    int mat[M][N] = {
        { 1, 2, 3, 4, 5 },
        { 5, 3, 1, 4, 2 },
        { 5, 6, 7, 8, 9 },
        { 0, 6, 3, 4, 12 },
        { 9, 7, 12, 4, 3 },
    };
    maxColumnSum(mat);
}

ผลลัพธ์

Index: 4, Column Sum: 31