How to Print the Subarray with Maximum Sum using Kadane's Algorith,

#include

using namespace std;

int main() {
int a[100] = {0};
int n,key;
int currentSum =0;
int maxSum =0;
std::cout << “Enter size of array” << ‘\n’;
cin>>n;
for (int k =0 ; k<n; k++) {
cin>>a[k];
}

for (int i = 0; i < n; i++) {
currentSum += a[i];
if(currentSum<0)
{
currentSum =0;
}
if (currentSum>maxSum) {
maxSum = currentSum;
}

}
std::cout << "Maximum Sum "<<maxSum << ‘\n’;

return 0;
}

Check this code

To print the maximum subarray, along with maintaining the maximum subarray sum, also maintain the indices whenever you get maximum subarray sum so far.
The function would be something like this:

int maxSubArraySum(int a[], int size)
{
int max_so_far = INT_MIN, max_ending_here = 0,
start =0, end = 0, s=0;
for (int i=0; i< size; i++ )
{
max_ending_here += a[i];
if (max_so_far < max_ending_here)
{
max_so_far = max_ending_here;
start = s;
end = i;
}
if (max_ending_here < 0)
{
max_ending_here = 0;
s = i + 1;
}
}
cout << "Maximum contiguous sum is "
<< max_so_far << endl;
cout << "Starting index "<< start
<< endl << "Ending index "<< end << endl;
}

1 Like

I hope I’ve cleared your doubt. I ask you to please rate your experience here
Your feedback is very important. It helps us improve our platform and hence provide you
the learning experience you deserve.

On the off chance, you still have some questions or not find the answers satisfactory, you may reopen
the doubt.