Examveda

Consider the following implementation of Kadane's algorithm:
#include<stdio.h>
int max_num(int a, int b)
{
    if(a > b)
       return a;
    return b;
}
int kadane_algo(int *arr, int len)	
{
    int ans = 0, sum = 0, idx;
    for(idx =0; idx < len; idx++)
    {
    	sum = max_num(0,sum + arr[idx]);
	ans = max_num(sum,ans);
     }
     return ans;
}
int main()
{
    int arr[] = {-2, -3, -3, -1, -2, -1, -5, -3},len = 8;
    int ans = kadane_algo(arr,len);
    printf("%d",ans);
    return 0;
}
What changes should be made to the Kadane's algorithm so that it produces the right output even when all array elements are negative?
Change 1 = Line 10: int sum = arr[0], ans = arr[0]
Change 2 = Line 13: sum = max_num(arr[idx],sum+arr[idx])

A. Only Change 1 is sufficient

B. Only Change 2 is sufficient

C. Both Change 1 and Change 2 are necessary

D. No change is required

Answer: Option C


Join The Discussion

Related Questions on Dynamic Programming in Data Structures