# -*- coding: utf-8 -*-
'''
Python程序员面试算法宝典---解题总结: 第4章 数组 4.10 如何求数组连续最大和
题目:
分析:
典型的动态规划,令f[i]表示以a[i]结尾的最大连续数组和,
则有:
f[i] = { f[i-1] + a[i], 如果f[i-1] > 0
{ a[i], 如果f[i - 1] <=0
边界情况:
f[0] = a[0]
关键:
参考:
Python程序员面试算法宝典
'''
def findMaxSuccessionSum(array):
if not array:
return
maxValue = array[0]
fI = array[0]
size = len(array)
for i in range(1, size):
if fI > 0:
fI += array[i]
else:
fI = array[i]
if fI > maxValue:
maxValue = fI
return maxValue
def process():
array = [1, -2, 4, 8, -4, 7, -1, -5]
result = findMaxSuccessionSum(array)
print result
assert result == 15
if __name__ == "__main__":
process()