Open In App

Check if sums of i-th row and i-th column are same in matrix

Improve
Improve
Like Article
Like
Save
Share
Report

Given a matrix mat[][], we have to check if the sum of i-th row is equal to the sum of i-th column or not. 

Examples: 

Input : 1 2 3 4 
        9 5 3 1
        0 3 5 6 
        0 4 5 6
Output : Yes
Sums of 1st row = 10 and 1st column 
are same, i.e., 10

Expected time complexity is O(m x n) where m is a number of rows and n is a number of columns.

The idea is really simple. We use a nested loop to calculate the sum of each row and column and then check whether their sum is equal or not. 

The implementation of the above idea is given below.  

C++




#include <bits/stdc++.h>
using namespace std;
const int MAX = 100;
 
// Function to check the if sum of a row
// is same as corresponding column
bool areSumSame(int a[][MAX], int n, int m)
{
    int sum1 = 0, sum2 = 0;
    for (int i = 0; i < min(n, m); i++) {
        sum1 = 0, sum2 = 0;
        for (int j = 0; j < min(n, m); j++) {
            sum1 += a[i][j];
            sum2 += a[j][i];
        }
        if (sum1 == sum2)
            return true;
    }
    return false;
}
 
// Driver Code
int main()
{
    int n = 4; // number of rows
    int m = 4; // number of columns
    int M[n][MAX] = { { 1, 2, 3, 4 },
                      { 9, 5, 3, 1 },
                      { 0, 3, 5, 6 },
                      { 0, 4, 5, 6 } };
    cout << areSumSame(M, n, m) << "\n";
    return 0;
}


Java




// Java program to check if there are two
// adjacent set bits.
public class GFG {
     
    // Function to check the if sum of a row
    // is same as corresponding column
    static boolean areSumSame(int a[][],
                             int n, int m)
    {
        int sum1 = 0, sum2 = 0;
        for (int i = 0; i < n; i++)
        {
            sum1 = 0;
            sum2 = 0;
            for (int j = 0; j < m; j++)
            {
                sum1 += a[i][j];
                sum2 += a[j][i];
            }
             
            if (sum1 == sum2)
                return true;
        }
         
        return false;
    }
     
    // Driver code
    public static void main(String args[])
    {
 
        int n = 4; // number of rows
        int m = 4; // number of columns
         
        int M[][] = { { 1, 2, 3, 4 },
                      { 9, 5, 3, 1 },
                      { 0, 3, 5, 6 },
                      { 0, 4, 5, 6 } };
                         
        if(areSumSame(M, n, m) == true)
            System.out.print("1\n");
        else
            System.out.print("0\n");
    }
}
 
// This code is contributed by Sam007.


Python3




# Python3 program to check the if
# sum of a row is same as
# corresponding column
MAX = 100;
 
# Function to check the if sum
# of a row is same as
# corresponding column
def areSumSame(a, n, m):
    sum1 = 0
    sum2 = 0
    for i in range(0, n):
        sum1 = 0
        sum2 = 0
        for j in range(0, m):
            sum1 += a[i][j]
            sum2 += a[j][i]
         
        if (sum1 == sum2):
            return 1
     
    return 0
 
# Driver Code
n = 4; # number of rows
m = 4; # number of columns
M = [ [ 1, 2, 3, 4 ],
      [ 9, 5, 3, 1 ],
      [ 0, 3, 5, 6 ],
      [ 0, 4, 5, 6 ] ]
       
print(areSumSame(M, n, m))
 
# This code is contributed by Sam007.


C#




// C# program to check if there are two
// adjacent set bits.
using System;
 
class GFG {
     
    // Function to check the if sum of a row
    // is same as corresponding column
    static bool areSumSame(int [,]a, int n, int m)
    {
        int sum1 = 0, sum2 = 0;
        for (int i = 0; i < n; i++)
        {
            sum1 = 0;
            sum2 = 0;
            for (int j = 0; j < m; j++)
            {
                sum1 += a[i,j];
                sum2 += a[j,i];
            }
             
            if (sum1 == sum2)
                return true;
        }
         
        return false;
    }
     
    // Driver code   
    public static void Main ()
    {
        int n = 4; // number of rows
        int m = 4; // number of columns
         
        int [,] M = { { 1, 2, 3, 4 },
                      { 9, 5, 3, 1 },
                      { 0, 3, 5, 6 },
                      { 0, 4, 5, 6 } };
                       
        if(areSumSame(M, n, m) == true)
            Console.Write("1\n");
        else
            Console.Write("0\n");
    }
}
 
// This code is contributed by Sam007.


PHP




<?php
// Function to check the if
// sum of a row is same as
// corresponding column
function areSumSame($a, $n, $m)
{
    $sum1 = 0;
    $sum2 = 0;
     
    for($i = 0; $i < $n; $i++)
    {
        $sum1 = 0;
        $sum2 = 0;
        for($j = 0; $j < $m; $j++)
        {
            $sum1 += $a[$i][$j];
            $sum2 += $a[$j][$i];
        }
         
        if ($sum1 == $sum2)
            return true ;
    }
    return false ;
}
 
// Driver code
$n = 4 ; // number of rows
$m = 4 ; // number of columns
$M = array(array(1, 2, 3, 4),
           array(9, 5, 3, 1),
           array(0, 3, 5, 6),
           array(0, 4, 5, 6));
 
echo areSumSame($M, $n, $m) ;
 
// This code is contributed
// by ANKITRAI1
?>


Javascript




<script>
// Java script program to check if there are two
// adjacent set bits.
 
     
    // Function to check the if sum of a row
    // is same as corresponding column
    function areSumSame(a,n,m)
    {
        let sum1 = 0, sum2 = 0;
        for (let i = 0; i < n; i++)
        {
            sum1 = 0;
            sum2 = 0;
            for (let j = 0; j < m; j++)
            {
                sum1 += a[i][j];
                sum2 += a[j][i];
            }
             
            if (sum1 == sum2)
                return true;
        }
         
        return false;
    }
     
    // Driver code
     
 
        let n = 4; // number of rows
        let m = 4; // number of columns
         
        let M = [[1, 2, 3, 4 ],
                    [ 9, 5, 3, 1],
                    [ 0, 3, 5, 6 ],
                    [ 0, 4, 5, 6 ]];
                         
        if(areSumSame(M, n, m) == true)
            document.write("1\n");
        else
            document.write("0\n");
     
 
// This code is contributed by Bobby
</script>


Output

1

Time Complexity: O(min(n, m) * min(n,m)) 
Auxiliary Space: O(1), since no extra space has been taken.
 



Last Updated : 24 Nov, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads