若序列 X={1, 2, -2, 3, -3, 1, -3, 2, 2, -2, 3, -2, 3, -2},则该序列的所有连续子序列中,连续子序列内各元素和的最大值为1。
(说明: 连续子序列指原序列中若干连续元素构成的序列,所有子序列中最短长度1,最大长度即原序列的长度。例如第3,4,5号连续的元素就是一个连续子序列,其元素为{-2, 3, -3},各元素和为-2+3-3=-2)
int max = Integer.MIN_VALUE; int sum = 0; for (int i = 0; i < arr.length; i++) { sum += arr[i]; if (max < sum) { max = sum; } sum = sum > 0 ? sum : 0; }
def count_max(a): max_sum = [] for i in range(len(a)): m = 0 b = [] for j in range(i,len(a)): m+=a[j] b.append(m) max_sum.append(max(b)) return (max(max_sum)) a=[1, 2, -2, 3, -3, 1, -3, 2, 2, -2, 3, -2, 3, -2] print(count_max(a))用了暴力循环,先依次计算a[0],a[0]+a[1],a[0]+a[1]+a[2],.....直到a[0]+...a[13]的共13个值存到数组b中,然后取b中最大值放到max_sum数组中,i+1=1,从a[1]开始执行上述过程,。。。最外层循环结束时共得到13个值放到数组max_sum中,然后求数组max_sum的最大值,即最终结果。