1. 程式人生 > >最大子陣列/連續數組的最大和

最大子陣列/連續數組的最大和

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

最大子陣列/連續數組的最大和