(Java实现) 洛谷 P1115 最大子段和

题目描述
给出一段序列,选出其中连续且非空的一段使得这段和最大。

输入输出格式
输入格式:
第一行是一个正整数NN,表示了序列的长度。

第二行包含NN个绝对值不大于1000010000的整数A_iA
i
​ ,描述了这段序列。

输出格式:
一个整数,为最大的子段和是多少。子段的最小长度为11。

输入输出样例
输入样例#1:
7
2 -4 3 -1 2 -4 3
输出样例#1:
4

import java.util.Scanner;


public class zuidaziduanhe {
	public static void main(String[] args) {
		Scanner sc =new Scanner(System.in);
		
		int n = sc.nextInt();
		int [] num = new int [n+1];
		for (int i = 1; i < num.length; i++) {
			num[i]=sc.nextInt();
		}
		 int Sum = 0;     
	       int max = 0;            
	       for (int i = 1; i < num.length; i++) {
	           
	           if(Sum<=0){      //如果当前连续n项的和小于等于0,则没必要与后面的元素相加
	               Sum = num[i];      //Sum重新赋值
	           }else{
	               Sum += num[i];     //如果Sum的值大于0,则继续与后面的元素相加,
	           }
	           if(Sum>max){         //每次改变Sum的值都有与max进行比较
	               max = Sum;       //如果Sum的值大于max,则将Sum的值赋值给max
	           }
	       }
	       System.out.println(max);
		
	}

}

posted @ 2019-06-01 07:47  南墙1  阅读(33)  评论(0编辑  收藏  举报