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

    题目描述

    输入一个整形数组(可能有正数和负数),求数组中连续子数组(最少有一个元素)的最大和。要求时间复杂度为O(n)。

    输入描述:

    【重要】第一行为数组的长度N(N>=1)

    接下来N行,每行一个数,代表数组的N个元素

    输出描述:

    最大和的结果

    输入

    复制
    8
    1
    -2
    3
    10
    -4
    7
    2
    -5

    输出

    复制
    18

    思路:这是个需要利用到动态规划的问题
    当数组只有一个时,则第一个是最大的子串
    当数组有两个时,最大子串就是要么取一个数,要么取两个数
    三个同理



    import java.util.*;
    
    public class Client {
    
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            while (scanner.hasNext()){
                int count = scanner.nextInt();
                int[] arr = new int[count];
                for (int i = 0; i < count; i++) {
                    arr[i] = scanner.nextInt();
                }
                lenOfSubString(arr);
            }
    
    //        int[] arr= {8,1,-2,3};
    //        lenOfSubString(arr);
        }
    
    
        private static void lenOfSubString(int[] arr) {
            int[] dp = new int[arr.length];
            dp[0] = arr[0];
            for (int i = 1; i < arr.length; i++) {
                if (dp[i - 1] < 0) {
                    dp[i] = arr[i];
                } else {
                    dp[i] = dp[i - 1] + arr[i];
                }
            }
            int max = dp[0];
            for (int i = 1; i < dp.length; i++) {
                if(dp[i] > max){
                    max = dp[i];
                }
            }
            System.out.println(max);
    
        }
    }


  • 相关阅读:
    Tomcat部署方式
    JAVA顺序队列
    JAVA稀疏数组
    JAVA数组
    JAVA运算符
    JAVA数据类型
    《IBM —PC 汇编语言程序设计》 第三章习题
    《IBM —PC 汇编语言程序设计》 第二章习题
    W3school导航条 CSS
    网易新闻CSS
  • 原文地址:https://www.cnblogs.com/dongma/p/13364259.html
Copyright © 2011-2022 走看看