给定一个数组,里面的数有正有负,如何得到该数组中,最大和的子序列呢?
得到最大和子序列,那么就先求最大和嘛,在求最大和的过程中记录一下起始下标和终点下标就好了。
下面列出代码:
public void maximumSubsequence (int arr[]) {
int max = arr[0];
int sum = 0;
int s = 0,start = 0,end = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
if (sum > max) {
max = sum;
start = s;
end = i;//记录终点下标
}
if (sum <= 0) {
sum = 0;
s = i+1;//更新起始下标
}
}
System.out.println("从:"+start+"到"+end);
System.out.println(max);
}