gpt4 book ai didi

c - 我的 K-Dane 算法实现有什么问题?

转载 作者:行者123 更新时间:2023-11-30 20:51:40 24 4
gpt4 key购买 nike

参加 HackerRank 挑战 The Maximum Subarray我们还应该针对负数实现 K_Dane 算法。

下面是我的 C 实现,我试图找出如何调试它,但没有成功,任何人都可以帮我找出代码中的错误吗?

#include <stdio.h>

int main(void)
{
long long int t, n;
scanf("%lld", &t);
while(t--)
{
scanf("%lld", &n);
long long int numbers[n], i;
for(i = 0;i < n;i++)
{
scanf("%lld", &numbers[i]);
}
long long int contigoussum = numbers[0],crtsum = numbers[0], sum = numbers[0];
for(i = 1;i < n;i++)
{
if(numbers[i] + sum > sum)
{
sum += numbers[i];
}

crtsum += numbers[i];
if(crtsum > contigoussum)
{
contigoussum = crtsum;
}
else
crtsum = 0;
}

printf("%lld %lld\n", contigoussum, sum);
}
return 0;
}

虽然,我不知道代码无法工作的所有测试用例,但这是我想出的一个:

输入

1
6
2 -1 2 3 4 -5

输出

7 11

真实答案:我认为它是 10 11,因为最大连续总和可能是 [2 -1 2 3 4]

最佳答案

因为这个:

else
crtsum = 0;

将其更改为:

else if(crtsum <0)
crtsum = 0;

here是您的工作代码的在线版本。

关于c - 我的 K-Dane 算法实现有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27485075/

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