- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Count the number of pairs that have column sum greater than row sum in C++
We are given a matrix of size NXN. The goal is to find the count of all valid pairs of indexes (i,j) such that the sum elements of column j is greater than the sum of elements of row i.
We will do this by traversing the matrix and calculate sums of elements of each row and column.
Store sum of elements of each in rowsum[N] and sum of elements of each column in colsum[N].
Now make pairs of rowsum[i] and colsum[j] and check if colsum[j]>rowsum[i]. If true increment count for such pairs.
Let’s understand with examples.
Input-: matrix= { { 1,2,0,1}, { 3,3,0,2}, { 1,3,0,2}, { 3,0,0,2} };
Output − Count of valid pairs − 9
Explanation −
Rowsum[0]= 1+2+0+1=5 Colsum[0]= 1+3+1+3=8 Rowsum[1]=3+3+0+2=8 Colsum[1]= 2+3+3+0=8 Rowsum[2]= 1+3+0+2=6 Colsum[2]= 0+0+0+0=0 Rowsum[3]=3+0+0+2=5 Colsum[3]= 1+2+2+2=7 Pairs of (i,j) such that rowsum[i] < colsum[j]. (0,0), (0,1), (0,3), (2,0), (2,1), (2,3), (3,0) (3,1), (3,3)
Input−
Arr[]= { {1,1,1}, {1,1,1}, {1,1,1} } N=3
Output − Count of valid pairs − 0
Explanation −
Rowsum[0]= 1+1+1=3 Colsum[0]= 1+1+1=3 Rowsum[1]= 1+1+1=3 Colsum[1]= 1+1+1=3 Rowsum[2]= 1+1+1=3 Colsum[2]= 1+1+1=3 No pairs possible where rowsum[i]<colsum[j]
Approach used in the below program is as follows
We take an integer array Arr[] initialized with random numbers.
Take a variable n which stores the length of Arr[].
Function countPairs(int arr[], int n) takes an array, its length as input and returns the pairs which are valid and meet desired conditions.
We take two arrays rowsum[n] and colsum[n].
Traverse matrix and add arr[i][j] to rowsum[i] and colsum[j] to calculate sum of row i and column j.
Now traverse arrays colsum[] and rowsum[] using two for loops.
If any colsum[j]>rowsum[i]. Increment count.
Return the count as result.
Example
#include <bits/stdc++.h> using namespace std; int countPairs(int arr[][3], int n){ // Count of pairs int count = 0; int rowsum[n]={0}; int colsum[n]={0}; int i,j; for (i = 0; i < n; i++){ for (j = 0; j < n; j++){ rowsum[i]+=arr[i][j]; colsum[j]+=arr[i][j]; } } for(i=0;i<n;i++){ for(j=0;j<n;j++) if(colsum[j]>rowsum[i]) { count++; } } return count; } int main(){ int Arr[][3] = { {1,3,5},{2,4,6},{3,5,7} }; int side=3; cout <<endl<<"Count of number of pairs : "<< countPairs(Arr, side); return 0; }
Output
If we run the above code it will generate the following output −
Count of number of pairs : 4