java.——最大子序列和(前提是:全部都是非负数)
直接上代码吧:
情况一:全部是非负数整数的时候,其实非负实数处理也一样。
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.——最大子序列和(前提是:全部都是非负数)的更多相关文章
- Caused by:java.sql.SQLException:ORA-01008:并非所有变量都已绑定
1.错误描述 Caused by:java.sql.SQLException:ORA-01008:并非所有变量都已绑定 2.错误原因 3.解决办法
- java中POJO类和DTO类都要实现序列化
java中POJO类和DTO类都要实现序列化 java中POJO类和DTO类都要实现序列化 java中POJO类和DTO类都要实现序列化 序列化:序列化是将对象转换为容易传输的格式的过程.例如,可以序 ...
- 初学者学Java常遇到的问题,我都给你回答了!
前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 春节在家刷知乎,看到了一个知乎的问题:<学 ...
- 11个简单的Java性能调优技巧,傻瓜都能学会!
大多数开发人员理所当然地以为性能优化很复杂,需要大量的经验和知识.好吧,不能说这是完全错误的.优化应用程序以获得最佳性能不是一件容易的事情.但是,这并不意味着如果你不具备这些知识,就不能做任何事情. ...
- java编程思想(2)--一切都是对象
1创建对象 String s ;创建引用,并未初始化,即引用未关联任何东西 String s2="asda"; 初始化 System.out.println(s2); System ...
- Java编程思想(二)一切都是对象
2.1用句柄操纵对象 尽管一切都看作是对象,但是操纵的标识符实际上是指向一个对象的“句柄”(handdle): 拥有一个句柄并不表示必须有一个对象同他连接: String s: 这里创建的只是句 ...
- [Effective Java]第三章 对所有对象都通用的方法
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- java多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方面有两种,分别是synchronized,wait与notify 先看一下java线程运行时各个阶段的运行状态 j ...
- 初读"Thinking in Java"读书笔记之第二章 --- 一切都是对象
用引用操纵对象 Java里一切都被视为对象,通过操纵对象的一个"引用"来操纵对象. 例如, 可以将遥控器视为引用,电视机视为对象. 创建一个引用,不一定需要有一个对象与之关联,但此 ...
随机推荐
- QWidget设置背景图
1.使用QSS出现很多问题 2.方法 this->setAutoFillBackground(true); QPalette palette = this->palette(); pale ...
- Icons - Material Design各种ICON图标大全
Icons - Material Design https://material.io/tools/icons/?icon=account_balance&style=baseline
- SpringBoot 整合使用dubbo
这里主要是按照teaey作者的spring-boot-starter-dubbo框架进行一些变化的使用 依赖包: <dependency> <groupId>com.aliba ...
- LuoguP2398 GCD SUM
题目地址 题目链接 题目描述 for i=1 to n for j=1 to n sum+=gcd(i,j) 给出n求sum. gcd(x,y)表示x,y的最大公约数. 输入输出格式 输入格式: n ...
- 在服务器端对sshd做白名单
1.添加用户 #useradd aaa #passwd aaa -->输入密码:123456 添加3个用户,bbb和ccc与aaa添加一样 2.添加白名单 #vim /etc/ssd/sshd_ ...
- CSU 2005 Nearest Maintenance Point(最短路+bitset)
https://vjudge.net/problem/CSU-2005 题意:给出带权值的图,图上有一些特殊点,现在给出q个询问,对于每个询问,输出离该点最近的特殊点,如果有多个,则按升序输出. 思路 ...
- 抗性基因数据库CARD介绍
随着抗生素药物的发现及使用,越来越多的耐药菌株由此产生.而耐药菌株的发展则会增加疾病治疗的难度和成本,因此耐药微生物的研究则显得尤为重要.目前,通过对耐药基因的鉴定挖掘能够一定程度上帮助我们揭开耐药机 ...
- mail命令
mail命令是命令行的电子邮件发送和接收工具.操作的界面不像elm或pine那么容易使用,但功能非常完整. 语法 mail(选项)(参数) 选项 -b<地址>:指定密件副本的收信人地址: ...
- hdu 3208 Integer’s Power 筛法
Integer’s Power Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- sublime3 mac : Package Control There are no packages available for installation
如下问题: 查看控制台:点击 ctrl+`打开控制台 发现是因为http://packagecontrol.io/channel_v3.json 获取失败,手动下载channel_v3.json文件, ...