【PAT】1-1 最大子列和

题目地址:http://www.patest.cn/contests/mooc-ds/01-1

#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <cstdio>
#include <string>
#include <cstring>
#include <cmath>
#include <ctime>
using namespace std;


#define read() freopen("in.txt", "r", stdin)
#define write() freopen("out.txt", "w", stdout)
#define rep( i , a , b ) for ( int i = ( a ) ; i <  ( b ) ; ++ i )  
#define For( i , a , b ) for ( int i = ( a ) ; i <= ( b ) ; ++ i ) 
#define clr( a , x ) memset ( a , x , sizeof a )  
#define cpy( a , x ) memcpy ( a , x , sizeof a ) 
#define max(a,b) ((a>b)?(a):(b))
#define LL long long 
#define MaxSize 100000

int gcd(int a,int b)
{
	return b?gcd(b,a%b):a;
}
inline int lcm(int a,int b)
{
	return a*b/gcd(a,b);
}
int MaxSubseqSum(int s[], int N)
{
	int ThisSum = 0;
	int MaxSum = 0;
	for (int i = 0; i < N; ++i)
	{
		ThisSum += s[i];
		if (ThisSum > MaxSum)
		{
			MaxSum = ThisSum;
		}else if (ThisSum < 0)
		{
			ThisSum = 0;
		}
	}
	return MaxSum;

}

int s[MaxSize];
int main()
{
	read();
	int n;
	while(scanf("%d",&n)!=EOF)
	{
		for (int i = 0; i < n; ++i)
		{
			scanf("%d",&s[i]);
		}
		printf("%d\n",MaxSubseqSum(s,n) );
	}
    return 0;
   
}

 

posted @ 2015-01-27 15:26  Summer先生  阅读(150)  评论(0编辑  收藏  举报