最大子段和

题目描述

给定n个整数(可能是负数)组成的序列a[1], a[2], a[3], …, a[n],求该序列的子段和如a[i]+a[i+1]+…+a[j]的最大值。

输入

每组输入包括两行,第一行为序列长度n,第二行为序列。

输出

输出字段和的最大值。

样例输入

5
-1 0 1 2 3

样例输出

6

代码实现(动态规划法)

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n,max;
		while(sc.hasNext()) {
			n = sc.nextInt();
			int a[] = new int[n];
			int b[] = new int[10001];
			for(int i=0;i=0)
					b[j] = b[j-1] + a[j];
				else
					b[j] = a[j];
				if(b[j]>max)
					max = b[j];
			}
			System.out.println(max);
		}
	}
}

你可能感兴趣的:(算法,动态规划,java)