最大子陣列/連續數組的最大和
阿新 • • 發佈:2018-05-18
HA ati pan AC () 個數 code 少包 CA
問題描述
在一個數組中找出和最大的連續幾個數(至少包含一個數)。
例如:
數組 A[] = [?2, 1, ?3, 4, ?1, 2, 1, ?5, 4],則連續的子序列[4,?1,2,1]有最大的和6。
輸入格式
第一行輸入一個不超過1000的整數n。
第二行輸入n個整數A[ i ]。
輸出格式
第一行輸出一個整數,表示最大的和。
代碼
package javaexam;
import java.util.Scanner;
/**
* @author houhaibushihai
* 最大子陣列/連續數組的最大和(動態規劃)
*
*/
public class MaxSub
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int max = Integer.MIN_VALUE;
int sum = 0;
for(int i = 0; i < n; ++i)
{
// 平常的想法是定義一個數組,存到數組裏。但本題不對數組全部的數據進操作,故可以挨個接收並操作,操作完就丟掉。
int num = input.nextInt();
sum = num + (sum > 0 ? sum : 0);
max = Math.max(max, sum);
}
System.out.println(max);
}
}
樣例測試
樣例一
3
1 1 -2
2
樣例二
9
-2 1 -3 4 -1 2 1 -5 4
6
最大子陣列/連續數組的最大和