java程序设计–求最大子数组和
【问题描述】给定一个数组,求数组中某一段元素和的最大值。注意这一段元素是连续的。如[31,-41,59,26,-53,58,97,-93,-23,84],的最大和是187=59+26+(-53)+58+97
【输入形式】第一行输入数组长度N(0<N<=20000)后面N行输入数组元素
【输出形式】输出子数组的最大和
【样例输入】 10 31 -41 59 26 -53 58 97 -93 -23 84
【样例输出】 187
题目分析:
求最大连续子数组:用蛮力法,把所有的子数组的和找出来,从中找出最大子数组。具体实现:三重for 循环。第一层确定子数组求和的开始位置,第二层确定求和子数组的结束位置。第三层对子数组求和。
代码:
package test1;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int a[]=new int[n];
for(int i=0;i<n;i++) {
a[i]=in.nextInt();
}
int maxsum=-100000;
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
int sum=0;
for(int k=i;k<=j;k++){
sum=sum+a[k];
if(sum>maxsum)
maxsum=sum;
}
}
}
System.out.println(maxsum);
}
}