/**
* 首位相连数组的最大子数组和
* [11/28/2014 liu]
*/
#define _CRT_SECURE_NO_DEPRECATE
#include <iostream>
#include <stdio.h>
int max(int a[], int n,int m) // 表示第几次循环 n表示数组a中元素的个数
{
int max = a[0];
int sum = 0;
for (int j = m; j < m+n; j++)
{
sum += a[j];
if (sum > max)
max = sum;
}
return max;
}
int returnresult(int a[],int n)
{
int m = 0;
for (int i = 0; i < n; i++)
{
int temp = max(a, n, i);
if (m < temp)
{
m = temp;
}
}
if (m < 0)
return 0;
else
return m;
}
int main()
{
int n;
while ((scanf("%d",&n)) != EOF)
{
if (n == 0)
break;
int a[200000];
for (int i = 0; i < n; i++)
{
scanf("%d",&a[i]);
}
// 将a数组扩大一倍
for (int i = 0; i < n; i++)
{
a[n + i] = a[i];
}
int max = returnresult(a, n);
printf("%d\n",max);
}
}
哎,还是不能过,那就这样吧,把自己的想法记录下来吧,超时了