This blog site is dedicated for articles on problem solving using C, C++, data structures, algorithms. Besides this few technical articles are also presented.
Mar 7, 2022
Find maximum average subarray of k length
Substring in a given string
Segregate 0s and 1s in an array
Sort an array of 0s, 1s and 2s
Count all distinct pairs with difference equal to k
sort an array using quicksort
Minimum length unsorted array
Maximum sum sub matrix
#include <iostream>
using namespace std;
void resetArray(int a[], int row)
{
for(int i=0; i<row; i++)
{
a[i] = 0;
}
}
void printMatrix(int a[4][4], int maxleft, int maxright, int maxup, int maxdown)
{
cout << "\n";
for(int i=maxup; i<=maxdown; i++)
{
for(int j=maxleft; j<= maxright; j++)
{
cout << a[i][j] << " ";
}
cout << endl;
}
}
void maxSumSubMatrix(int a[4][4], int row, int col)
{
int sum = 0, maxSum = 0;
int sumColumn[row];
int maxleft = 0, maxright = 0, maxup = 0, maxdown = 0;
int curup = 0;
for(int i=0; i<col; i++)
{
resetArray(sumColumn, row);
for(int j=i; j<col; j++)
{
sum = 0;
curup = 0;
for(int k=0; k<row; k++)
{
// cout << endl << sumColumn[k] << " + " << a[k][j] << "=";
sumColumn[k] += a[k][j];
// cout << sumColumn[k];
sum += sumColumn[k];
// cout << " sumsofar=" << sum ;
if(sum > maxSum)
{
maxSum = sum;
maxleft = i;
maxright = j;
maxdown = k;
maxup = curup;
// cout << " i:" << i << " j:" << j;
// cout << " maxsum:" << maxSum << " sum:" << sum;
// cout << " maxleft:" << maxleft << " maxright:" << maxright;
// cout << " maxup:" << maxup << " maxdown:" << maxdown << endl;
}
else if(sum <= 0)
{
sum = 0;
curup = k+1;
}
}
}
}
printMatrix(a, maxleft, maxright, maxup, maxdown);
}
int main() {
// your code goes here
int a[4][4] = {
1, -2,-1, 3,
3,-6, 7, -4,
-5, 3, 0, 2,
-4, 5,-2, 1
};
printMatrix(a, 0, 3, 0, 3);
cout << "Maximum sum sub matrix is: " << endl;
maxSumSubMatrix(a, 4, 4);
return 0;
}