#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.