算法最大子数组和的动态规划算法,Java实现

Posted zhangphil

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法最大子数组和的动态规划算法,Java实现相关的知识,希望对你有一定的参考价值。

import java.util.Random;

public class MainClass {
    public static void main(String[] args) {
        int[] array = new int[10];

        //生成随机测试数据,数据集里面必须有正有负。
        for (int i = 0; i < array.length; i++) {
            Random random = new Random();
            array[i] = (int) (Math.random() * 10) * (random.nextBoolean() ? 1 : -1);
        }

        //打印数据集
        System.out.println("测试的随机数组:");
        for (int n : array) {
            System.out.print(n + " ");
        }

        System.out.println("\\n最大子数组和:");
        System.out.println(maxSub(array));
    }

    //最大子数组和的动态规划算法
    public static int maxSub(int[] array) {
        int retSum = 0;

        int sum = 0;
        int tempSum = 0;

        for (int i = 0; i < array.length; i++) {
            if (sum > 0) {
                sum = sum + array[i];

                if (sum > tempSum) {
                    tempSum = sum;
                }
            } else {
                sum = array[i];
            }

            retSum = Math.max(retSum, sum);
        }

        return retSum;
    }
}

测试几轮数据集输出如下:

以上是关于算法最大子数组和的动态规划算法,Java实现的主要内容,如果未能解决你的问题,请参考以下文章

算法动态规划-求连续子序列和的最大值

最大子序和 --动态规划

动态规划最大子序和

剑指offer(C++)-JZ85:连续子数组的最大和(算法-动态规划)

剑指offer(C++)-JZ85:连续子数组的最大和(算法-动态规划)

剑指offer(C++)-JZ42:连续子数组的最大和(算法-动态规划)