最大子序列和的接口函数(3)

举报
心跳包 发表于 2021/11/12 23:59:09 2021/11/12
【摘要】 int MaxSubsequenceSum(const int A[],int N){ int thisSum=0,MaxSum=0,j; for(j=0;j<N;j++) { thisSum+=A[j]; printf("thisSum %d..A[%d]=%d\n",thisSum,j,A[j]); if(thi...

  
  1. int MaxSubsequenceSum(const int A[],int N)
  2. {
  3. int thisSum=0,MaxSum=0,j;
  4. for(j=0;j<N;j++)
  5. {
  6. thisSum+=A[j];
  7. printf("thisSum %d..A[%d]=%d\n",thisSum,j,A[j]);
  8. if(thisSum>MaxSum)
  9. {
  10. MaxSum=thisSum;
  11. printf("MaxSum:%d\n",MaxSum);
  12. }
  13. else if(thisSum<0)
  14. thisSum=0;
  15. }
  16. return MaxSum;
  17. }
  18. int main()
  19. {
  20. int number[]={1,-1,3,4};
  21. int maxsum=0;
  22. printf("start ....\n");
  23. maxsum=MaxSubsequenceSum(number,4);
  24. printf("maxsum:%d\n",maxsum);
  25. exit(0);
  26. }

运行得出结果


  
  1. start ....
  2. thisSum 1..A[0]=1
  3. MaxSum:1
  4. thisSum 0..A[1]=-1
  5. thisSum 3..A[2]=3
  6. MaxSum:3
  7. thisSum 7..A[3]=4
  8. MaxSum:7
  9. maxsum:7

此算法的优点,它只对数据进行一次扫描,一旦A[j]被读入并处理,它就不再需要被记忆。在于它可以被顺序读入,在主存中不必存储数组任何部分,在任何时刻,算法都能对它已经读入的数据给出子序列问题的正确答案。

文章来源: xintiaobao.blog.csdn.net,作者:心跳包,版权归原作者所有,如需转载,请联系作者。

原文链接:xintiaobao.blog.csdn.net/article/details/89485557

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。