在今年的數據結構考卷中,要求編寫程序得到最大和,現在增加一個要求,即還需要輸出該子序列的第一個和最後一個元素。
#include <iostream>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<algorithm>
#include<string.h>
#include<queue>
using namespace std;
int main()
{
int k;
while(~scanf("%d",&k),k)
{
int a[10005];
int left=0,maxleft=0,maxright=k-1,i,j,sum=0,maxsum=-1;
for(i=0;i<k;i++)
scanf("%d",&a[i]);
for(i=0;i<k;i++)
{
sum+=a[i];
if(sum>maxsum)
{
maxsum=sum;
maxleft=left;
maxright=i;
}
else if(sum<0)
{
sum=0;
left=i+1;
}
}
if(maxsum<0)
maxsum=0;
printf("%d %d %d\n",maxsum,a[maxleft],a[maxright]);
}
return 0;
}