Почему код алгоритма моего Кадане дает вывод 0 для всех случаев? - PullRequest
0 голосов
/ 21 сентября 2018

Это код, который я написал для поиска подмассива максимальной суммы с использованием алгоритма Кадане.

Код:

#include <stdio.h>
  int maxSum(int a[],int size)
        {
            int ans=0;  //stores the final sum
            int sum=0;  //stores the sum of the elements in the empty array
            int i;
            for(i=0;i<size;i++)
            {
                sum=sum+a[i];
                if(sum<0)
                {
                    sum=0;
                }
                if(ans<sum)
                {
                    ans=sum;
                }
            }
            return ans;
        }
        void main(){
            int j,size,t,total; //size=size of the array,t=number of test cases
            scanf("%d\n",&t);
            while(t-->0)
            {
                int a[size];
                for(j=0;j<size;j++)
                {
                    scanf("%d ",&a[j]);
                }
                total=maxSum(a,size);
                printf("\n%d",total);
            }
        }

Я получаю неправильный вывод:

ДляВвод:

2 //test cases  
3 //case 1  
1 2 3  
4 //case 2  
-1 -2 -3 -4  

Ваш вывод:

0 //it should be 6  
0 //it should be -1  

1 Ответ

0 голосов
/ 21 сентября 2018

Единственная ошибка - вы не инициализировали size перед его использованием для определения размера массива a - в противном случае программа в порядке.

MAJOR -> Кажется, вы кодируете его на Turbo (как вы использовали void main() вместо int main(void)), который является устаревшим компилятором - переход на GCC или CLANG .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...