最大子序列和的接口函数(2)
【摘要】
int MaxSubsequenceSum(const int A[],int N){ int thisSum,MaxSum,i,j,k; MaxSum=0; for(i=1;i<N;i++) { for(j=i;j<N;j++) { thisSum=0; for(k=i;k<j;j++) { t...
-
int MaxSubsequenceSum(const int A[],int N)
-
{
-
int thisSum,MaxSum,i,j,k;
-
MaxSum=0;
-
for(i=1;i<N;i++)
-
{
-
for(j=i;j<N;j++)
-
{
-
thisSum=0;
-
for(k=i;k<j;j++)
-
{
-
thisSum+=A[K];
-
}
-
if(thisSum>MaxSum)
-
MaxSum=thisSum;
-
}
-
return MaxSum
-
}
-
}
举个例子,在test.c中:
-
#include <stdio.h>
-
#include <stdlib.h>
-
-
int MaxSubsequenceSum(const int A[],int N)
-
{
-
int thisSum,MaxSum,i,j,k;
-
MaxSum=0;
-
for(i=0;i<N;i++)
-
{
-
printf("i:%d ....\n",i);
-
for(j=i;j<N;j++)
-
{
-
printf("j:%d ....\n",j);
-
thisSum=0;
-
for(k=i;k<=j;k++)
-
{
-
printf("k:%d ....\n",k);
-
thisSum+=A[k];
-
}
-
if(thisSum>MaxSum)
-
MaxSum=thisSum;
-
}
-
}
-
return MaxSum;
-
}
-
-
int main()
-
{
-
int number[]={1,-1,3,4};
-
int maxsum=0;
-
-
printf("start ....\n");
-
maxsum=MaxSubsequenceSum(number,4);
-
printf("maxsum:%d\n",maxsum);
-
exit(0);
-
}
linux下编译运行
-
gcc -o sub maxsub.c
-
./sub
得出结果
-
start ....
-
i:0 ....
-
j:0 ....
-
k:0 ....
-
j:1 ....
-
k:0 ....
-
k:1 ....
-
j:2 ....
-
k:0 ....
-
k:1 ....
-
k:2 ....
-
j:3 ....
-
k:0 ....
-
k:1 ....
-
k:2 ....
-
k:3 ....
-
i:1 ....
-
j:1 ....
-
k:1 ....
-
j:2 ....
-
k:1 ....
-
k:2 ....
-
j:3 ....
-
k:1 ....
-
k:2 ....
-
k:3 ....
-
i:2 ....
-
j:2 ....
-
k:2 ....
-
j:3 ....
-
k:2 ....
-
k:3 ....
-
i:3 ....
-
j:3 ....
-
k:3 ....
-
maxsum:7
第一个for循环为N,第二个for循环大小为N-i;第三个for循环大小j-i+1;总数为O(1*N*N*N)=O()
文章来源: xintiaobao.blog.csdn.net,作者:心跳包,版权归原作者所有,如需转载,请联系作者。
原文链接:xintiaobao.blog.csdn.net/article/details/89476888
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)