求子串和的最大值(最慢与最快)

我就是我 2022-11-28 10:43 188阅读 0赞

最慢的O(N*N*N):

  1. #include"stdio.h"
  2. int MaxSubseqSum(int a[],int n)
  3. {
  4. int ThisSum,MaxSum=0;
  5. int i,j,k;
  6. for(i=0;i<n;i++)
  7. {
  8. for(j=i;j<n;j++)
  9. {
  10. ThisSum=0;
  11. for(k=i;k<=j;k++)
  12. {
  13. ThisSum+=a[k];
  14. printf("%d ",ThisSum);
  15. }
  16. printf("--------\n");
  17. if(ThisSum>MaxSum)
  18. MaxSum=ThisSum;
  19. }
  20. }
  21. return MaxSum;
  22. }
  23. int main()
  24. {
  25. int b[]={1,2,-1,8,-3,5,9,-7};
  26. int data;
  27. data=MaxSubseqSum(b,8);
  28. printf("%d",data);
  29. }

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhZ3VvcWluZw_size_16_color_FFFFFF_t_70

最快的O(N):

  1. #include"stdio.h"
  2. int MaxSubseqSum4(int a[],int n)
  3. {
  4. int ThisSum,MaxSum;
  5. int i;
  6. ThisSum=MaxSum=0;
  7. for(i=0;i<n;i++)
  8. {
  9. ThisSum+=a[i];
  10. printf("%d \n",ThisSum);
  11. if(ThisSum>MaxSum)
  12. MaxSum=ThisSum;
  13. else if(ThisSum<0)
  14. ThisSum=0;
  15. }
  16. return MaxSum;
  17. }
  18. int main()
  19. {
  20. int b[]={1,2,-1,8,-3,5,9,-7};
  21. int data;
  22. data=MaxSubseqSum4(b,8);
  23. printf("%d",data);
  24. }

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhZ3VvcWluZw_size_16_color_FFFFFF_t_70 1

发表评论

表情:
评论列表 (有 0 条评论,188人围观)

还没有评论,来说两句吧...

相关阅读

    相关 连续

    题描述: 给定一个由数字组成的数组,求出和最大的子数组 求解方法: 1.暴力法 选取所有连续和的可能性,O(n^2) 2.分析法 当遍历到第i个元素时,判断在...