1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
def (s, ends, starts=0): b = [s[starts]] max = s[starts] start = starts end = ends j = starts + 1 for i in range(1, ends-starts+1): if s[j] > b[i-1]+s[j]: start = j b.append(s[j]) elif s[j] < b[i-1]+s[j]: b.append(b[i-1]+s[j]) if max < b[i]: max = b[i] end = j j += 1 if max < 0: start = end = -1 max = 0 return "起始位置:",start, " 结束位置:",end, " 最大子段和:",max
if __name__ == '__main__': list = list(map(int, input("输入数组,输出最大子段和:").strip().split())) starts = int(input("输入开始位置:")) ends = int(input("输入结束位置:")) print(max_sum(list, ends, starts))
|
近期评论