个人作业-数组

public class Sum {
    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        findMaxSubArySum1();
    }
    public static void findMaxSubArySum1() {
        // sum为子数组的和
        int sum = 0;
        // max为子数组的最大和
        int max = 0;
        // 最大子数组的起始位置
        int startPos = 0;
        // 最大子数组的结束位置
        int endPos = 0;
        int[] array = { -9,-7,-4,12,-7,-8,41,6,5,-1,14,-11 };
        for (int i = 0; i < array.length; i++) {
            sum += array[i];// 求和
            if (sum < 0) {// 如果当前求得总和为负数的话,就将其清零,并且开始位置从下一个位置开始
                sum = 0;
                startPos = i + 1;
            }
            if (sum > max) {// 如果求得总和大于之前的最大值的话,就将sum赋值给max,同时记录最后的位置
                max = sum;
                endPos = i + 1;
            }
        }
        System.out.println("Max:" + max);
       
    }
}

结果截图:

原文地址:https://www.cnblogs.com/chenyuchun/p/10506480.html