#include <stdio.h>
#include <iostream.h >
int MaxSumOutput(int seq[],int n)
{
int MaxSum = seq[0];
for(int i = 0;i < n;i++)
{
if(seq[i] < 0)
{
if(seq[i] > MaxSum)
{
MaxSum = seq[i];
}
}
else
{
int s = seq[i];
if(MaxSum < s)
MaxSum = s;
for(int j = i + 1;j < n;j++)
{
s += seq[j];
if(s < 0)
{
i = j;
break;
}
else
{
if(s > MaxSum)
MaxSum = s;
}
}
}
}
return MaxSum;
}
int main()
{
int a[] = {1,2,3,4,5};
int b[] = {-2,11,-4,13,-2,-5};
int c[] = {7,8,-16,2,4,-2,15,-14,7,-3,-1};
int d[] = {-5,-2,-3,-7};
cout << MaxSumOutput(a,5);
cout << "/n";
cout << MaxSumOutput(b,6);
cout << "/n";
cout << MaxSumOutput(c,11);
cout << "/n";
cout << MaxSumOutput(d,4);
getchar();
return 0;
}
这个是自己做的,昨晚回去和同学讨论,他还有一个更好的,用了所谓的动态规划算法(-_-!!),很不错,等下要了发上来。
可能会有问题,没有大量测试,欢迎提出更好的算法。
相关链接:2007广东北电笔试题目