python - 迭代特定范围的索引和算法伪代码-> python

标签 python arrays algorithm pseudocode

我目前正在研究伪代码算法,当我尝试将其转换为 Python 时,我遇到了一些我很好奇的问题。

在伪代码中,算法是:

Algorithm-1(A:array[1..n] of integer) sum,max:integer
sum = 0
max = 0
for i = 1 to n
    sum = 0
    for j = i to n
        sum = sum + A[j]
        if sum > max then
            max = sum
return max

问题是通过以下数组运行的: [1,2,3,4,5,6,7,8,9,10], [-1,-2,-3,-4,-5,-6,-7,-8,-9, -10], [0,0,0,0,0,0,0,0,0,0,0], [-1,2,-3,4,-5,6,7,-8,9 ,-10] 并找到返回值。我可以看到前 3 个的输出应如下所示:54, 0, 0 但第 4 个是我遇到问题的地方。

我对这个算法的理解是,它获取基本数组,找到它的总和,然后从下一个索引开始获取相同的数组并找到那个总和,返回的值是这些总和中的最高值。

基本上,如果给定 [1,2,-3,4,5] 数组,它会这样看:

[1,2,-3,4,5] 的总和 = 9

[2,-3,4,5] 的总和 = 8

[-3,4,5] 的总和 = 6

[4,5] 的总和 = 9

[5] 的总和 = 5

最后返回的最大值是9。

基于这种理解,我认为第 4 个数组的值是 [6,7,-8,9,-10] 中的 4。那是正确的吗?

现在转到我的第二个问题,如何在 Python 中正确复制此伪代码?

我想出的不太管用的是:

def testFunction(array):
    sum = 0
    max = 0
    for i in array:
        sum = 0
        j = i
        for j in range(j, len(array)):
            arrayVal = array[j] #redundant but for debug purposes
            sum = sum + arrayVal
            if sum > max:
                max = sum
    return max

我对 Python 有点生疏,但我从来没有遇到过更改 for 循环运行的 range 的问题,所以我想知道如何正确转换代码。此外,在查看我的调试器时,似乎迭代器 i 或 j 在这种情况下似乎不是索引,而是与该索引关联的值,这弄乱了我的第二个循环的范围部分。

这显然是一个家庭作业问题,我在这个确切的场景中发现了很多混合答案,所以我试图将它转换成 Python,但这又带来了另一包问题,所以我想来这里寻求建议和潜在的机会解决方案。

我希望我说得够清楚了。

谢谢!

最佳答案

如果您试图在不使用内置函数 summax 的情况下从列表中找到连续成员的最大总和,这里有一个可能的解决方案。

def testFunction(array):
    s = 0
    for i in array:
        s += i    
    mx = s
    print('The sum of {} is: {}'.format(array, s))
    k = 1
    for i in array[:-1]: 
        s -= i 
        print('The sum of {} is: {}'.format(array[k:], s))
        mx = mx if s < mx else s 
        k += 1
    return mx

print(testFunction([1, 2, -3, 4, 5]))

输出是

The sum of [1, 2, -3, 4, 5] is: 9
The sum of [2, -3, 4, 5] is: 8
The sum of [-3, 4, 5] is: 6
The sum of [4, 5] is: 9
The sum of [5] is: 5
9

关于python - 迭代特定范围的索引和算法伪代码-> python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57816365/

相关文章:

python - 如何抑制 Django 中的弃用警告?

java - 将字符数组转换为字符数组列表

C# 解析对象的 JSON 数组

arrays - Excel VBA - 用于处理范围的数组更改单元格的格式

algorithm - 用于存储长序列(moSTLy 连续)整数的高效数据结构

c# - 是否有一种已知的快速算法来查找与给定数字相乘的所有数字对?

python - 模块级别的独立但密切相关的功能

python - 如何在 python 中替换 pandas 中的整数值?

python - 寻找最接近值算法

python - 替换位于之间的字符串