为什么我的Kadane的算法代码在所有情况下都输出为0?

时间:2018-09-21 11:28:59

标签: c arrays kadanes-algorithm

这是我编写的使用Kadane算法查找最大和子数组的代码。

代码:

#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 :(得分:3)

唯一的错误是您没有使用size初始化数组a的大小之前对其进行了初始化-否则程序就可以了。

主要-> 似乎您是在 Turbo 上对其进行编码(因为您使用的是void main()而不是int main(void))过时的编译器-转到 GCC CLANG