返回一个整数数组中最大子数组的和

题目要求:

  

 设计思路:

  1、随机生成一个数组

  2、对数组中每个成员判断其前一个数是否大于0,若大于0该成员变更为其本身加上前一个数,若小于0则不变

  3、遍历数组找到最大值即为所求

源码

package main;

public class count {

    public static void main(String[] args) {
        
        System.out.println("当前数组为:");
        int n = (int) (Math.random()*20);
        int[] arr = generateArray(n, 100, -100);
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
        System.out.println();
        
        for (int i = 1; i < arr.length; i++) {
            if (arr[i-1] > 0) {
                arr[i] = arr[i] + arr[i-1];
            }
        }
        int max = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if(arr[i]>max)
                max = arr[i];
        }
        System.out.println("最大子数组之和为:
"+max);

    }
    
    public static int[] generateArray(int len,int max,int min)
    {
        int[] arr = new int[len];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = (int)(Math.random()*(max-min)+min);
        }
        return arr;
    }

}

结果样例

原文地址:https://www.cnblogs.com/52bb/p/12365528.html