小编Wil*_*ski的帖子

了解 Kadane 算法 (Python) 中发生的事情

我很难理解在我发现的 Kadane 算法的这两个例子中发生了什么。我是 Python 新手,我希望理解这个复杂的算法将帮助我更好地查看/阅读程序。

为什么一个例子比另一个更好,它只是List vs Range吗?还有其他什么可以使示例之一更有效吗?此外,还有一些关于计算中发生了什么的问题。(例子中的问题)

我已经使用PythonTutor帮助我逐步了解到底发生了什么。

示例 1:

在 PythonTuter 中,当您在提供的屏幕截图中选择下一步时,so_far 的值变为 1。这是怎么回事?给出总和,我认为它加上 -2 + 1 即 -1,所以当 so_far 变成 1 时,这是怎么回事?

        def max_sub(nums):
            max_sum = 0
            so_far = nums[0]
        
            for x in nums[1:]:
                so_far = max(x, x + so_far)
                max_sum = max(so_far, max_sum)
            return max_sum
        
nums = [-2, 1, -3, 4, -1, 2, 1, -5, 4]
    max_sub(nums)
                6 
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

示例 2:

与此类似的问题,当我选择 NEXT 步骤时,max_sum 从 -2 变为 4 ......但是如果将元素添加到 2(即 4)中会怎样。对我来说,那将是 -2 + …

python algorithm python-3.x kadanes-algorithm

6
推荐指数
1
解决办法
136
查看次数

标签 统计

algorithm ×1

kadanes-algorithm ×1

python ×1

python-3.x ×1