基礎數據結構應用——最大子列和問題
阿新 • • 發佈:2018-11-14
pan nts -h 不同 ... printf fine () script
給定K個整數組成的序列{ N?1??, N?2??, ..., N?K?? },“連續子列”被定義為{ N?i??, N?i+1??, ..., N?j?? },其中 1。“最大子列和”則被定義為所有連續子列元素的和中最大者。例如給定序列{ -2, 11, -4, 13, -5, -2 },其連續子列{ 11, -4, 13 }有最大的和20。現要求你編寫程序,計算給定整數序列的最大子列和。
本題旨在測試各種不同的算法在各種數據情況下的表現。各組測試數據特點如下:
- 數據1:與樣例等價,測試基本正確性;
- 數據2:102個隨機整數;
- 數據3:103個隨機整數;
- 數據4:104個隨機整數;
- 數據5:105個隨機整數;
#include<stdio.h>
#define MAXN 100001
long long maxSubseqSum(int a[],int n)
{
long long thisSum=0,maxSum=0;
for(int i=0;i<n;++i)
{
thisSum+=a[i];
if(thisSum>maxSum)
maxSum=thisSum;
else if(thisSum<0)
thisSum=0;
}
return maxSum;
}
int main()
{
int k,a[MAXN];
scanf("%d",&k);
for(int i=0;i<k;++i)
scanf("%d",&a[i]);
printf("%lld\n",maxSubseqSum(a,k));
return 0;
}
基礎數據結構應用——最大子列和問題