计蒜客ACM 最大子阵列 java

计蒜客ACM 最大子阵列 java

在一个数组中找出和最大的连续几个数。(至少包含一个数)
例如:
数组A[] = [−2, 1, −3, 4, −1, 2, 1, −5, 4],则连续的子序列[4,−1,2,1]有最大的和6.
输入格式
第一行输入一个不超过1000的整数n。
第二行输入n个整数A[i]。
输出格式
第一行输出一个整数,表示最大的和。
样例1
输入:
3
1 1 -2
输出:
2

解决方案

代码块

java代码,例如:
import java.util.Scanner;
public class 最大子阵列 {
/* public static int maxSubSum(int[] array)
* 表示静态方法maxSubSum(int[] array) 在一个数组中找出和最大的连续几个数
* */
public static int maxSubSum(int[] array){
int sum = 0, max = array[0];//把数组中的第一个设为最大值,依次比较
for(int i = 0; i < array.length; i++){
sum += array[i];//连续的数组中的数和
if(sum > max)
max = sum;
if(sum < 0) //如果 sum < 0, 将 sum 重新置 0
sum = 0;
}
return max;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
for (int i = 0; i < a.length; i++) {
a[i]=sc.nextInt();
}
System.out.println(maxSubSum(a));
}
}

你可能感兴趣的:(计蒜客)