**【问题描述】**使用动态规划算法解最大子段和问题,具体来说就是,依据递归式,按照顺序求得子问题。
**【输入形式】**在屏幕上输入一个序列元素,包含负整数、0和正整数。
**【输出形式】**序列的最大子段和,及得到最大子段和时的起始和终止编号。
【样例输入】
-2 11 -4 13 -5 -2
【样例输出】
20
2
4
【样例说明】
输入:6个数,元素间以空格分隔。
输出:序列的最大子段和20,得到最大子段和时的起始编号为2,终止编号为4。
**【评分标准】**根据输入得到准确的输出。
python实现:
def main():
s = list(map(int, input().split()))
maxn = -1
summ = j = start = end = 0
n = len(s)
for i in range(0, n):
if summ+s[i] < s[i]:
summ = s[i]
j = i
else:
summ += s[i]
if maxn < summ:
maxn = summ
start = j
end = i
if maxn < 0:
print("0")
print("1 ")
print(n)
else:
print(maxn)
print(start+1)
print(end+1)
if __name__ == '__main__':
main()