gpt4 book ai didi

c - 找出数组中非负数的最大子数组

转载 作者:行者123 更新时间:2023-11-30 17:08:27 26 4
gpt4 key购买 nike

A : [1, 2, 5, -7, 2, 3] 这两个子数组是 [1, 2, 5] [ 2, 3]。答案是[1, 2, 5],因为它的总和大于[2, 3]

注意:如果存在平局,则比较段的长度并返回具有最大长度的段。
注2:如果仍然存在平局,则返回具有最小起始索引的段。

我已经编写了代码及其适用于某些情况,但不适用于此情况:

A : [ 1967513926, 1540383426, -1303455736, -521595368 ]
Your function returned the following :
1967513926
The expected returned value :
1967513926 1540383426

这是我的代码

int* maxset(int* A, int n1, int *length_of_array) {

int greatin=0,greatout=0,greatin1=0,number1=0,number=0;
int n3,i,count=0,k,sum=0,max=0,ini=0,end=0;

for(i=0;i<n1;i++)
{
ini=end;
if(A[i]>=0)
{
count=1;
number++;
sum=sum+A[i];
if (sum>max )
{

max=sum;
greatout=i;
greatin=ini;

}
else if (sum==max && number>number1)
{
max=sum;
greatout=i;
greatin=ini;
}
}
else
{
sum=0;
end=i+1;
number1=number;
number=0;

}
}
if(count>0)
{
count=0;
n3=greatout-greatin+1;
*length_of_array=n3;
int * ret = (int *) malloc(sizeof(int) * *length_of_array);

for(i=greatin;count<n3;i++)
{
ret[count]=A[i];
count++;

}
return ret;

}
else
{

*length_of_array=0;
int * ret = (int *) malloc(sizeof(int) * *length_of_array);
return ret;
}
}

最佳答案

您正在使用 int,当您添加时,您会溢出限制 2,147,483,647

关于c - 找出数组中非负数的最大子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33647389/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com