#include<iostream>
using namespace std;
int a[100009];
int main()
{
int n;
while(scanf("%d",&n)&&n)
{
for(int i=0;i<n;i++) scanf("%d",&a[i]);
int max=-1,s=-1;
for(int i=0;i<n;i++)
{
if(s>=0) s+=a[i];
else s=a[i];
if(s>max) max=s;
}
int min=(1<<31)-1;s=(1<<31)-1;
for(int i=0;i<n;i++)
{
if(s<=0) s+=a[i];
else s=a[i];
if(s<min) min=s;
}
printf("%d %d/n",max,min);
}
return 0;
}
本文介绍了一个C++程序,该程序用于解决寻找数组中最大和最小子数组的问题。通过两次遍历数组的方式,分别计算出所有连续子数组的最大和最小累积和。
4094

被折叠的 条评论
为什么被折叠?



