algorithm - 最大连续和算法的实现

标签 algorithm lua

function maxContSum(array)
    local len = #array
    local maxSum = 0
    local runningSum = array[0]
    local j = 0
    local start, finish = 0,0
    for i=0, len-1,1 do
        if runningSum > 0 then
            runningSum =runningSum + array[i]
        else 
            runningSum = array[i]
            j = i
        end
        if runningSum > maxSum then
            maxSum = runningSum
            start = j
            finish = i
        end
    print ("maxsum is ", maxSum)
   end
end

a = {-2, 2,3,4,5,-7,8,0,-1,1,2,3,4}
maxContSum(a)

这是我的代码。 但我收到此错误消息:

lua: maxContSum.lua:8: attempt to compare number with nil stack
traceback:
        maxContSum.lua:8: in function 'maxContSum'
        maxContSum.lua:24: in main chunk
        [C]: ?

需要帮助 谢谢!

编辑: 我发现了我的问题。 Lua数组索引从1开始:)

最佳答案

lua 中的数组是从 1 而不是从 0 开始索引

local runningSum = array[0] 应该是 local runningSum = array[1] 还有 j = 1

for 循环应该从 1 到 n

for i = 1, len, 1 do

关于algorithm - 最大连续和算法的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12908195/

相关文章:

arrays - 有没有最快的方法来反转由两种类型的元素组成的数组中元素的范围?

c - 合并排序没有给出正确的输出,c

algorithm - 这不就是解决0-1背包问题的一种正确但非常高效简单的方法吗?

lua - 我在 lua 中使用这些表的效率如何?

java - LuaJ 导入 Lua 方法

algorithm - 确定 DAG 是否具有从所有其他顶点可达的顶点的线性时间算法?

c++ - 这2张魔法卡能发挥的最大技能是多少?

multithreading - Lua::如何编写将加载多个 CPU 的简单程序?

c++ - 如何从 Lua 脚本调用 C++ 函数?

python - int(input()) 的 Lua 等价物是什么?