题目描述
给定长度为n的整数序列,a[1...n],求[1,n]某个子区间[i,j]使得a[i]+…+a[j]和最大.或者求出最大的这个和.例如(-2,11,-4,13,-5,2)的最大子段和为20,所求子区间为[2,4].
输入描述
第一行为一个整数n,表示数组有n个数据,第二行依次输入n个整数
输出描述
计算出n个整数中连续k个数的最大和
解题报告:
简单dp。
package practice;
import java.util.Scanner;
public class N28MaxFieldSum {
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<n;i++){
a[i]=sc.nextInt();
}
int c=0,sum=0,begin=0,end=0;
for(int i=0;i<n;i++){
if(c>0){
c+=a[i];
}else{
c=a[i];
begin=i;
}
if(c>sum){
sum=c;
end=i;
}
}
System.out.println(sum);
System.out.println(begin+" "+end);
}
}