题目:给定一整型数列{a1,a2…,an},找出连续非空子串{ax,ax+1,…,ay},使得该子序列的和最大,其中,1<=x<=y<=n。
思路:当子串和为负数的时候,开始从新计算之后子串的和。
#include<stdio.h>
int main()
{
int n,m,i,max,sum;
scanf("%d",&n);
while(n--)
{
max=0;
scanf("%d",&m);
scanf("%d",&sum);
max=sum;
while(--m)
{
scanf("%d",&i);
if(sum<0)
sum=i;
else
sum+=i;
if(sum>max)
max=sum;
}
printf("%d\n",max);
}
}