zoukankan      html  css  js  c++  java
  • Java实现最大连续子数组和

    1 问题描述
    给定一个整数数组,数组里可能有正数、负数和零。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。例如,如果输入的数组为{1,-2,3,10,-4,7,2,-5},和最大的子数组为{3,10,-4,7,2},那么输出为该子数组的和18。

    2 解决方案
    2.1 蛮力枚举法

    package com.liuzhen.array_2;

    public class MaxSubArray {

    public int bruteMethod(int[] A){
    int maxResult = A[0];
    int maxTemp = 0;;
    for(int i = 0;i < A.length;i++){
    for(int j = i;j < A.length;j++){
    for(int k = i;k <= j;k++){
    maxTemp += A[k];
    }
    if(maxTemp > maxResult)
    maxResult = maxTemp;
    maxTemp = 0; //完成一个子序列求和后,重新赋值为0
    }
    }
    return maxResult;
    }

    public static void main(String[] args){
    MaxSubArray test = new MaxSubArray();
    int[] A = {1,-2,3,10,-4,7,2,10,-5,4};
    System.out.println("使用蛮力法求解数组A的最大连续子数组和为:"+test.bruteMethod(A));
    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    运行结果:

    使用蛮力法求解数组A的最大连续子数组和为:28
    1
    2.2 动态规划法

    package com.liuzhen.array_2;

    public class MaxSubArray {

    public int dynaticMethod(int[] A){
    int maxResult = A[0];
    int maxTemp = 0;
    for(int i = 0;i < A.length;i++){
    if(maxTemp >= 0)
    maxTemp += A[i];
    else
    maxTemp = A[i];
    if(maxTemp > maxResult)
    maxResult = maxTemp;
    }
    return maxResult;
    }

    public static void main(String[] args){
    MaxSubArray test = new MaxSubArray(http://www.amjmh.com);
    int[] A = {1,-2,3,10,-4,7,2,10,-5,4};
    System.out.println("使用动态规划法求解数组A的最大连续子数组和为:"+test.dynaticMethod(A));
    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    运行结果:

    使用动态规划法求解数组A的最大连续子数组和为:28
    ---------------------

  • 相关阅读:
    R的农场 chebnear
    math
    求平面内最近点对
    字符加密 cipher
    CF448C Painting Fence
    CF264B Good Sequences
    洛谷3166 数三角形
    [NOIP2013] 华容道
    [NOIP2013] 货车运输
    [NOIP2013] 积木大赛
  • 原文地址:https://www.cnblogs.com/hyhy904/p/11257582.html
Copyright © 2011-2022 走看看