本文将会介绍最大子列和的四种不同复杂度算法。
算法一:暴力枚举法,算法复杂度为O(N三次方)
int maxsequence1(int A[], int N)
{
int ThisSum , MaxSum=0;
int i, j, k;
for (i = 0; i <= N; i++) {
for (j = i; j <= N; j++) {
ThisSum = 0;
for (k = i; k <= j; k++)
ThisSum += A[k];
if (ThisSum > MaxSum)
MaxSum = ThisSum;
}
}
return MaxSum;
}
算法二:算法一的改进,减少一个for循环,复杂度为O(N平方)
int maxsequence2(int A[], int N)
{
int ThisSum, MaxSum = 0;
int i, j;
for (i = 0; i <= N; i++) {
ThisSum = 0;
for (j = i; j <= N; j++) {
ThisSum += A[j];

本文探讨了求解最大子列和问题的四种算法,包括暴力枚举、改进算法、分治法和在线处理算法。分别介绍了它们的时间复杂度,分别是O(N^3)、O(N^2)、O(NlogN)和O(N),并提供了主程序的概览。
最低0.47元/天 解锁文章
1276

被折叠的 条评论
为什么被折叠?



