方法一:暴力法
使用i,j两重循环控制,遍历所有可能的子列,如果发现 更大的子列和 则更新。
#include <stdio.h>
#define N 100005
int MaxSubseqSum2 ( int a[], int n ) { //稍微简单点的办法,二重循环,O(N^2)
int ThisSum, MaxSum = 0;
for ( int i = 0; i < n; i++ ) {
ThisSum = 0;
for ( int j = i; j < n; j++ ) {
ThisSum += a[j];
if ( ThisSum > MaxSum )
MaxSum = ThisSum;
}
}
return MaxSum;
}
int main()
{
int a[N], K;
scanf("%d", &K);
for ( int i = 0; i < K; i++ ) {
scanf("%d", &a[i]);
}
printf( "%d",MaxSubseqSum2( a, K ) );
system("pause");
return 0;
}
慕课浙大数据结构课后习题01-复杂度1 最大子列和问题,需要自己写输入输出,还有分治算法可以将时间复杂度降低到O(NlogN),(过两天再看)。