求子数组最大和

【问题描述】给定一个数组,求数组中某一段元素和的最大值。注意这一段元素是连续的。如[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

package com;

import java.util.Scanner;

public class First {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Scanner scanner=new Scanner(System.in);
		int n=scanner.nextInt();
		int a[]=new int [n];
		
		for(int i=0;i<n;i++)
		{
			a[i]=scanner.nextInt();
		}
		
		int max=a[0];
		int sum=0;
		for(int i=0;i<n;i++)
		{
			sum=a[i];
			for(int j=i+1;j<n;j++)
			{
				sum+=a[j];
				if(sum>max)
					max=sum;
			}
		}
		System.out.println(max);
	}

}

猜你喜欢

转载自blog.csdn.net/qq_40530943/article/details/80514662