zoukankan      html  css  js  c++  java
  • 连续子数组的最大和问题

    一个整数数组中的元素有正有负,在该数组中找出一 个连续子数组,

    要求该连续子数组中各元素的和最大,这个连续子数组便被称作最大连续子数组。

    比如数组{2,4,-7,5,2,-1,2,-4,3}的最大连续子数组为{5,2,-1,2},最大连续子数组的和为5+2-1+2=8。

    问题输入就是一个数组,输出该数组的“连续子数组的最大和”。

    解法:

    设置一个变量sum作为累加和,如果sum小于0,则把当前元素赋值给sum,否则,sum加当前元素。
    将最大的sum保存在变量max中。每次判断是否比sum大,如果比sum小,则将sum赋值给max。
    public class MaxSum {
    public static void main(String[] args) {
    int arr[] = {-1,3,4,-2,5};
    System.out.print(maxNum(arr));
    }
    public static Integer maxNum(int arr[]){
    int sum = 0;
    int max = 0;
    for (int i=0;i<arr.length;i++){
    if(sum>=0){
    sum+=arr[i];
    }else {
    sum = arr[i];
    }
    if(sum>max){
    max = sum;
    }
    }
    return max;
    }
    }
    总结:一个for循环就可以解决的问题。
  • 相关阅读:
    html+php超大视频上传功能
    html+php超大视频上传教程
    html+php超大视频上传方案
    html+php超大视频上传技术
    html+php超大视频上传实例解析
    html+php超大视频上传示例
    html+php超大视频上传实例
    矩阵求导
    概率密度
    概率分布函数
  • 原文地址:https://www.cnblogs.com/liuwentao/p/9445315.html
Copyright © 2011-2022 走看看