Encuentra la columna con la suma máxima en una array

Dada una array N*N. La tarea es encontrar el índice de la columna con la suma máxima. Esa es la columna cuya suma de elementos es máxima.
Ejemplos
 

Input : mat[][] = {
        { 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 },
    };
Output : Column 5 has max sum 31

Input : mat[][] = {
        { 1, 2, 3 },
        { 4, 2, 1 },
        { 5, 6, 7 },
    };
Output : Column 3 has max sum 11

La idea es recorrer la array por columnas y encontrar la suma de los elementos en cada columna y verificar para cada columna si la suma actual es mayor que la suma máxima obtenida hasta la columna actual y actualizar la suma_máxima en consecuencia. 
A continuación se muestra la implementación del enfoque anterior: 
 

C++

// C++ program to find column with
// max sum in a matrix
#include <bits/stdc++.h>
using namespace std;
 
#define N 5 // No of rows and column
 
// Function to find the column with max sum
pair<int, int> colMaxSum(int mat[N][N])
{
    // Variable to store index of column
    // with maximum
    int idx = -1;
 
    // Variable to store max sum
    int maxSum = INT_MIN;
 
    // Traverse matrix column wise
    for (int i = 0; i < N; i++) {
        int sum = 0;
 
        // calculate sum of column
        for (int j = 0; j < N; j++) {
            sum += mat[j][i];
        }
 
        // Update maxSum if it is less than
        // current sum
        if (sum > maxSum) {
            maxSum = sum;
 
            // store index
            idx = i;
        }
    }
 
    pair<int, int> res;
 
    res = make_pair(idx, maxSum);
 
    // return result
    return res;
}
 
// driver code
int main()
{
 
    int mat[N][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 },
    };
 
    pair<int, int> ans = colMaxSum(mat);
 
    cout << "Column " << ans.first + 1 << " has max sum "
         << ans.second;
 
    return 0;
}

Java

// Java program to find column
// with max sum in a matrix
import java.util.*;
 
class GFG
{
// No of rows and column
static final int N = 5;
 
// structure for pair
static class Pair
{
    int first , second;
     
    Pair(int f, int s)
    {
        first = f;
        second = s;
    }
}
 
// Function to find the column
// with max sum
static Pair colMaxSum(int mat[][])
{
    // Variable to store index of
    // column with maximum
    int idx = -1;
 
    // Variable to store max sum
    int maxSum = Integer.MIN_VALUE;
 
    // Traverse matrix column wise
    for (int i = 0; i < N; i++)
    {
        int sum = 0;
 
        // calculate sum of column
        for (int j = 0; j < N; j++)
        {
            sum += mat[j][i];
        }
 
        // Update maxSum if it is
        // less than current sum
        if (sum > maxSum)
        {
            maxSum = sum;
 
            // store index
            idx = i;
        }
    }
 
    Pair res;
 
    res = new Pair(idx, maxSum);
 
    // return result
    return res;
}
 
// Driver code
public static void main(String args[])
{
    int mat[][] = { { 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 }};
 
    Pair ans = colMaxSum(mat);
 
    System.out.println("Column " + (int)(ans.first + 1) +
                           " has max sum " + ans.second);
}
}
 
// This code is contributed
// by Arnab Kundu

Python3

# Python3 program to find column with
# max Sum in a matrix
 
N = 5
 
# Function to find the column with max Sum
def colMaxSum(mat):
     
    # Variable to store index of column
    # with maximum
    idx = -1
 
    # Variable to store max Sum
    maxSum = -10**9
 
    # Traverse matrix column wise
    for i in range(N):
 
        Sum = 0
 
        # calculate Sum of column
        for j in range(N):
            Sum += mat[j][i]
 
        # Update maxSum if it is less
        # than current Sum
        if (Sum > maxSum):
            maxSum = Sum
 
            # store index
            idx = i
         
    # return result
    return idx, maxSum
 
# Driver Code
 
mat = [[ 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 ]]
 
ans, ans0 = colMaxSum(mat)
 
print("Column", ans + 1,   
      "has max Sum", ans0)
 
# This code is contributed by
# Mohit kumar 29

C#

// C# program to find column
// with max sum in a matrix
using System;
 
class GFG
{
     
// No of rows and column
static readonly int N = 5;
 
// structure for pair
public class Pair
{
    public int first , second;
     
    public Pair(int f, int s)
    {
        first = f;
        second = s;
    }
}
 
// Function to find the column
// with max sum
static Pair colMaxSum(int [,]mat)
{
    // Variable to store index of
    // column with maximum
    int idx = -1;
 
    // Variable to store max sum
    int maxSum = int.MinValue;
 
    // Traverse matrix column wise
    for (int i = 0; i < N; i++)
    {
        int sum = 0;
 
        // calculate sum of column
        for (int j = 0; j < N; j++)
        {
            sum += mat[j, i];
        }
 
        // Update maxSum if it is
        // less than current sum
        if (sum > maxSum)
        {
            maxSum = sum;
 
            // store index
            idx = i;
        }
    }
 
    Pair res;
 
    res = new Pair(idx, maxSum);
 
    // return result
    return res;
}
 
// Driver code
public static void Main(String []args)
{
    int [,]mat = { { 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 }};
 
    Pair ans = colMaxSum(mat);
 
    Console.WriteLine("Column " + (int)(ans.first + 1) +
                        " has max sum " + ans.second);
}
}
 
// This code has been contributed by 29AjayKumar

Javascript

<script>
// Javascript program to find column
// with max sum in a matrix
 
// No of rows and column
let N = 5;
 
// Function to find the column
// with max sum
function colMaxSum(mat)
{
    // Variable to store index of
    // column with maximum
    let idx = -1;
   
    // Variable to store max sum
    let maxSum = Number.MIN_VALUE;
   
    // Traverse matrix column wise
    for (let i = 0; i < N; i++)
    {
        let sum = 0;
   
        // calculate sum of column
        for (let j = 0; j < N; j++)
        {
            sum += mat[j][i];
        }
   
        // Update maxSum if it is
        // less than current sum
        if (sum > maxSum)
        {
            maxSum = sum;
   
            // store index
            idx = i;
        }
    }
   
    let res;
   
    res = [idx, maxSum];
   
    // return result
    return res;
}
 
// Driver code
let mat = [[ 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 ]];
        
let ans = colMaxSum(mat);
document.write("Column " + (ans[0] + 1) +
                           " has max sum " + ans[1]);
 
 
// This code is contributed by unknown2108
</script>
Producción: 

Column 5 has max sum 31

 

Complejidad de tiempo: O (N * N) donde N es el tamaño de cada fila o columna en la array.

Espacio Auxiliar : O(1)

Publicación traducida automáticamente

Artículo escrito por barykrg y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *