zoukankan      html  css  js  c++  java
  • java数组中最大的子数组之和

    一个有N个整数元素的一维数组,那么子数组之和的最大值是什么?

    例如:-2 5 3 -6 4 -8 6 maxsum=8

    无论是高中学习c语言还是现在的Java,首先想法是就是找出所有的子数组,重复计算,然后求其和,取最大。
    int Maxsum1(int *array,int n)
    {
    int max=-INF;
    int sum;
    int i,j;
    for(i=0;i<n;i++) {="" sum="0;" for(j="i;j<n;j++)" sum+="array[j];" if(sum="">max)
    max=sum;
    }
    }
    return max;
    }
    </n;i++)>

    还有一种想法,累加。重复累加,只要大于0,就说明当前的“和”可以继续增大,如果小于0了,说明“之前的最大和”已经不可能继续增大了,就从新开始。
    int Maxsum3(int *array,int n)
    {
    int max=-INF;
    int sum=0;
    for(int i=0;i<n;i++) {="" if(sum<0)="" sum="array[i];" else="" sum+="array[i];" if(sum="">max)
    max=sum;
    }
    return max;
    }
    </n;i++)>

    附网络上高端的动态规划求解
    2个数组的
    更短的

    真正接受的思路:
    从左边开始,在这个过程中记录一个当前子数组的最大值,前几项小于零时则刷新所有数据,从后面一个数重新开始,当发现累加结构大于记录的最大值时,则替换,最后比较完后,记录的最大值就为真实的最大值。

    感谢各位网络技术好人的分享==

  • 相关阅读:
    第二章 数据类型、变量、和运算符
    第一章
    ActiveMQ点对点的发送和接收
    初探设计模式(1)——工厂模式
    IDEA使用switch传入String编译不通过
    MyBatis日期转换报错
    HTML页面传值问题
    maven配置本地仓库
    Maven的下载及安装
    PHP实现获得一段时间内所在的所有周的时间
  • 原文地址:https://www.cnblogs.com/ykl10/p/6598507.html
Copyright © 2011-2022 走看看