连续最大子串和:给定一整型数列{a1,a2...,an},找出连续非空子串{ax,ax+1,...,ay},使得该子序列的和最大。
连续最小子串和:给定一整型数列{a1,a2...,an},找出连续非空子串{ax,ax+1,...,ay},使得该子序列的和最小。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int num[10000];
int n;
int maxsum() //最大和
{
int sum=0,maxx=-2147483647;
for(int i=0;i<n;i++)
{
sum += num[i];
if(sum > maxx)
maxx = sum;
if(sum < 0)
sum = 0;
}
return maxx;
}
int minsum() //最小和
{
int sum1=0,minn=2147483647;
for(int i=0;i<n;i++)
{
sum += num[i];
if(sum < minn)
minn = sum;
if(sum > 0)
sum = 0;
}
return minn;
}
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&num[i]);
printf("%d %d",maxsum(),minsum());
}