思路:
使用for循环,将所有的子序列的都相加取和,每次得到一个子序列的和都与当前得到的最大和比较,更新最大和。
代码实现:
a. 定义一个方法,用于返回最大子序列和,在main方法中调用:
public static int max(int[] arr) {
int sum=0;//最大和
for(int i=0;i<arr.length;i++) {
int flag=0;//中间值
for(int j=i;j<arr.length;j++) {
flag=arr[j]+flag;//当前的子序列的和
if(sum<=flag) {//更新最大和
sum=flag;
}
}
}
return sum;
}
b. 完整代码如下:
public class Max_Sub {
public static int max(int[] arr) {
int sum=0;
for(int i=0;i<arr.length;i++) {
int flag=0;
for(int j=i;j<arr.length;j++) {
flag=arr[j]+flag;
if(sum<=flag) {
sum=flag;
}
}
}
return sum;
}
public static void main(String[] args) {
int a[] = {1,2,3,4,5};
int b[] = {-1,-2,5,-2,7,-3};
System.out.println(max(a));
System.out.println(max(b));
}
}