直接上代码吧:

情况一:全部是非负数整数的时候,其实非负实数处理也一样。

package Person;

import java.util.Scanner;

public class Main
{
    public static final int maxn = 105;
    public static int[] Arr = new int[maxn];
    public static void main(String[] args)
    {
        int N;
        Scanner cin = new Scanner(System.in);
        N = cin.nextInt();
        for(int i = 0 ; i < N ; i++)
        {
            Arr[i] = cin.nextInt();
        }
        int thissum,maxsum;
        thissum = maxsum = 0;
        for(int i = 0 ; i < N ; i++)
        {
            thissum += Arr[i];//向右累加
            if(thissum > maxsum)
            {
                maxsum = thissum;//更新最大值
            }
            else if(thissum < 0)
            {
                thissum = 0;//若是小于零,则不可能是后面的部分和增大,抛弃它。
            }
        }
        System.out.println(maxsum);
    }
}

情况二:不确定里边的数是啥类型的。

从以下方面入手:

1.遍历一遍数组,如果全部是负数的时候,找出最大的负数,并把它输出来,结束程序,否则,进到下面的步骤。

2.思路和上面的一样。

代码实现如下:(假设所有的数均为整数)

package Person;

import java.util.Scanner;

public class Main
{
    public static final int maxn = 105;
    public static int[] Arr = new int[maxn];
    public static void main(String[] args)
    {
        int N;
        Scanner cin = new Scanner(System.in);
        N = cin.nextInt();
        int Max = 0;
        for(int i = 0 ; i < N ; i++)
        {
            Arr[i] = cin.nextInt();
            if(i == 0)
            {
                Max = Arr[i];
            }
            else
            {
                Max = Math.max(Max,Arr[i]);
            }
        }
        if(Max < 0)
        {
            System.out.println(Max);
            return;
        }

  //这个是分水岭。
        int thissum,maxsum;
        thissum = maxsum = 0;
        for(int i = 0 ; i < N ; i++)
        {
            thissum += Arr[i];//向右累加
            if(thissum > maxsum)
            {
                maxsum = thissum;//更新最大值
            }
            else if(thissum < 0)
            {
                thissum = 0;//若是小于零,则不可能是后面的部分和增大,抛弃它。
            }
        }
        System.out.println(maxsum);
    }
}

代码其实很简单的,如果有不明白的,随时可以留言,24小时在线,谢谢呀

java.——最大子序列和(前提是:全部都是非负数)的更多相关文章

  1. Caused by:java.sql.SQLException:ORA-01008:并非所有变量都已绑定

    1.错误描述 Caused by:java.sql.SQLException:ORA-01008:并非所有变量都已绑定 2.错误原因 3.解决办法

  2. java中POJO类和DTO类都要实现序列化

    java中POJO类和DTO类都要实现序列化 java中POJO类和DTO类都要实现序列化 java中POJO类和DTO类都要实现序列化 序列化:序列化是将对象转换为容易传输的格式的过程.例如,可以序 ...

  3. 初学者学Java常遇到的问题,我都给你回答了!

    前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 春节在家刷知乎,看到了一个知乎的问题:<学 ...

  4. 11个简单的Java性能调优技巧,傻瓜都能学会!

    大多数开发人员理所当然地以为性能优化很复杂,需要大量的经验和知识.好吧,不能说这是完全错误的.优化应用程序以获得最佳性能不是一件容易的事情.但是,这并不意味着如果你不具备这些知识,就不能做任何事情. ...

  5. java编程思想(2)--一切都是对象

    1创建对象 String s ;创建引用,并未初始化,即引用未关联任何东西 String s2="asda"; 初始化 System.out.println(s2); System ...

  6. Java编程思想(二)一切都是对象

    2.1用句柄操纵对象 尽管一切都看作是对象,但是操纵的标识符实际上是指向一个对象的“句柄”(handdle): 拥有一个句柄并不表示必须有一个对象同他连接: String  s:   这里创建的只是句 ...

  7. [Effective Java]第三章 对所有对象都通用的方法

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  8. java多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?

    多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方面有两种,分别是synchronized,wait与notify 先看一下java线程运行时各个阶段的运行状态 j ...

  9. 初读"Thinking in Java"读书笔记之第二章 --- 一切都是对象

    用引用操纵对象 Java里一切都被视为对象,通过操纵对象的一个"引用"来操纵对象. 例如, 可以将遥控器视为引用,电视机视为对象. 创建一个引用,不一定需要有一个对象与之关联,但此 ...

随机推荐

  1. 【做题】CF1045(ABH)

    原文链接https://www.cnblogs.com/cly-none/p/9697662.html 题目当然不会做完了,这里只讲有做&会做的. A. Last chance 题意:有\(n ...

  2. 如何查看sonarqube的版本

    Server Logs & System Info The System Info page is found at Administration > System. It gives ...

  3. [AtCode 4104] Small and Large Integers

    题目链接:https://abc093.contest.atcoder.jp/tasks/abc093_b?lang=en 这个题虽然很水,但是还是很容易踩坑,比如我,直接想到了[b,a]之间的长度和 ...

  4. IDEA快速变量的快捷键

    假想早期的JDBC需要或许bean的许多字段, 那么IDEA提供了CTRL+ALT+V对该行快速根据变量类型自动生成变量. 此时如果变量标红,需要按一下TAB.

  5. 防止网站检测出Selenium的window.navigator.webdriver属性

    只需在Chromeoptions对象中添加一个属性即可解决 import time from selenium.webdriver import Chrome, ChromeOptions optio ...

  6. JS计算前一天或后一天,前一月后一月

    JS计算前一天或后一天,前一月后一月,上一天下一下,上一月下一月. 方法一: function ktkGetNextMonth(currentDate, scaleStep) { //scaleSte ...

  7. angularjs启动项目报ERROR in AppModule is not an NgModule解决方法

    这主要是ts编译器版本问题,一般是因为ts编译器版本过高导致. 解决方式: npm uninstall -g typescript npm install -g typescript tsc -v 查 ...

  8. hihoCoder 1116 计算(线段树)

    http://hihocoder.com/problemset/problem/1116 题意: 思路: 用线段树解决,每个节点需要设置4个变量,sum记录答案,all记录整个区间的乘积,pre记录该 ...

  9. windows下远程连接Mysql

    使用“Ctrl + R”组合键快速打开cmd窗口,并输入“cmd”命令,打开cmd窗口. 使用“mysql -uroot -proot”命令可以连接到本地的mysql服务. 使用“use mysql” ...

  10. springmvc后台接前端的参数,数组,集合,复杂对象等

    springmvc后台接前端的参数,数组,集合,复杂对象等 参考地址:https://blog.csdn.net/feicongcong/article/details/54705933  常用的几种 ...