gpt4 book ai didi

c# - Kadane 的算法找到具有最大总和的子数组

转载 作者:太空狗 更新时间:2023-10-29 18:27:41 28 4
gpt4 key购买 nike

<分区>

我有以下 Kadane's algorithm 的实现求解数组的最大子数组问题:

public static decimal FindBestSubsequence
(this IEnumerable<decimal> source, out int startIndex, out int endIndex)
{
decimal result = decimal.MinValue;
decimal sum = 0;
int tempStart = 0;

List<decimal> tempList = new List<decimal>(source);

startIndex = 0;
endIndex = 0;

for (int index = 0; index < tempList.Count; index++)
{
sum += tempList[index];
if ((sum > result) ||
(sum == result && (endIndex - startIndex) < (index - tempStart)))
{
result = sum;
startIndex = tempStart;
endIndex = index;
}
else if (sum < 0)
{
sum = 0;
tempStart = index + 1;
}
}

return result;
}

当我使用以负数开头的序列时失败,例如 -1, 2, 3 给出的结果是 4, [0,2] 而不是5, [1,2]

我一辈子都找不到错误所在。可能是算法设计的缺陷?

提前致谢。

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