View Code of Problem 19

#include <stdio.h>
#include <stdlib.h>

/* 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。  */
/*输入有多组数据。每组数据第一行输入一个整数n(n<=10^6),第二行输入n个整数。n=0时程序结束*/ 
int main() {
	int n,i,j;
	while(scanf("%d",&n)!=EOF){
	
	int a[n];
	for(i=0;i<n;i++){
		scanf("%d",&a[i]);
	}
	int max=a[0];
	for(i=0;i<n;i++){
		int sum=0;
		for(j=i;j<n;j++){
			sum=sum+a[j];
			if(sum>max){
				max=sum;
			}
		}
	}
	printf("%d\n",max);
	}
}

Double click to view unformatted code.


Back to problem 19