列表子数组和最大

# 用暴力方法

arr = [1,2,3,4,5]

def max_child(arr):
max = 0
x = 0
y = 0
n = len(arr)
for i in range(n):
for j in range(i, n):
arr_sum = 0
for k in range(i, j+1):
arr_sum = arr_sum + arr[k]
if arr_sum > max:
max = arr_sum
x = i

y = j


print('最大子数组下标数组的起始-下标', x,y)

return max

arr = [1, 2, -3, 4, 5]  
print("最大子数组的和:",max_child(arr)) 


# 动态规划法求最大子数组

def max_child(arr):  
    result = arr[0]  
    sum = arr[0]  
    x = 0  
    for i in range(1, len(arr)):  
        if sum > 0:  
            sum += arr[i]  
        else:  
            sum = arr[i]  
            x = i  
        if sum > result:  
            result = sum  
            y = i  
    print("最大子数组的起始-结束下标", x, y)  
    return result  
  
arr = [1, 2, -3, 4, 5]  
print("最大子数组的和:",max_child(arr)) 


阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页