在一个数组中找出和最大的连续几个数。(至少包含一个数)
例如:
数组A[] = [−2, 1, −3, 4, −1, 2, 1, −5, 4],则连续的子序列[4,−1,2,1]有最大的和6.
输入格式
第一行输入一个不超过1000的整数n。
第二行输入n个整数A[i]。
输出格式
第一行输出一个整数,表示最大的和。
样例输入
3 1 1 -2
样例输出
2
这道题目主要用到了贪心算法,每次都将数组中的元素加到一个临时变量中去,再与最大和进行比较,大则置换最大和的值,否则继续加,当临时和小于0.这时应置和为0。
代码如下:
import java.util.Scanner;
public class MaxSize {
public static int getMax(int []a){
int max=Integer.MIN_VALUE;
int temp=0;
for(int i=0;i<a.length;i++){
temp+=a[i];
if(max<temp){
max=temp;
}
if(temp<0){
temp=0;
}
}
return max;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int len=sc.nextInt();
int a[]=new int[len];
for(int i=0;i<len;i++){
a[i]=sc.nextInt();
}
System.out.println(getMax(a));;
}
}