#include "stdio.h"
//算法1:
int MaxSubsequenceSum1(const int A[], int N)
{
int ThisSum, MaxSum, i, j, k;
MaxSum = 0;
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;
}
//算法2:
int MaxSubsequenceSum2(const int A[], int N)
{
int ThisSum, MaxSum, i, j;
MaxSum = 0;
for(i = 0; i < N; i++)
{
ThisSum = 0;
for(j = i; j < N; j++)
{
ThisSum += A[j];
if(ThisSum > MaxSum)
MaxSum = ThisSum;
}
}
return MaxSum;
}
//算法4:
int MaxSubsequenceSum4(const int A[], int N)
{
int ThisSum, MaxSum, i;
ThisSum = MaxSum = 0;
for(i = 0; i < N; i++)
{
ThisSum += A[i];
if(ThisSum > MaxSum)
MaxSum = ThisSum;
else if(ThisSum < 0)
ThisSum = 0;
}
return MaxSum;
}
//测试
int main()
{
int a[] = {-2, 11, -4, 13, -5, -2};
int size = sizeof(a) / sizeof(a[0]);
printf("MaxSubsequenceSum1 :%d/n", MaxSubsequenceSum1(a, size));
printf("MaxSubsequenceSum2 :%d/n", MaxSubsequenceSum2(a, size));
printf("MaxSubsequenceSum4 :%d/n", MaxSubsequenceSum4(a, size));
return 0;
}
博客展示了三种最大子序列和算法的C语言实现,包括算法1、算法2和算法4。通过嵌套循环等方式计算最大子序列和,并在主函数中对这些算法进行测试,使用给定数组输出各算法计算的最大子序列和结果。
7833

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



