zoukankan      html  css  js  c++  java
  • 第三次软件工程作业——最大连续子数组和(最大子段和)

    1.题目要求

        给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时定义子段和为0,依此定义,所求的最优值为: Max{0,a[i]+a[i+1]+…+a[j]},1<=i<=j<=n    例如,当(a[1],a[2],a[3],a[4],a[5],a[6])=(-2,11,-4,13,-5,-2)时,最大子段和为20。   -- 引用自《百度百科》
    

    2.代码的编写

    这个代码的时间复杂度有点高,但是我目前还没想到别的方法,如我想到了其他的方法就贴在下面。
    coding点这里

    3.程序流程图

    4.利用eclipse中的Junit对代码进行测试

    根据上面的程序流程图来选择两组数据,从而来测试程序的正确性。
    这三组数据分别是{7 -1 -2 -3 -2 -5 -1 -2} ,{7 -2 11 -4 13 -5 -5 -2}和{6 -1 -2 -3 1 2 3}
    其代码:

    然后对测试结果分析

    5.总结

    希望下次能把作业做的更好一点吧,毕竟我感觉我和很多同学还差蛮多的。引用单老师的一句话就是“杀人偿命,欠债还钱” 。

    今天研究了一会儿,想到了一个时间复杂度低的方法。

    今天我参考了一下杭电上别人写的代码点这里
    我的代码:

    上一个代码的时间复杂度为O(n2)而这个代码的时间复杂度为O(n);
    来测试一下看看这个代码是否正确(测试代码就不需要重新写啦,只要把调用的函数改一下)
    然后看看测试结果:

  • 相关阅读:
    发布全文检索类库外包
    给即将面试的人
    实验四 Web服务器2
    电子公文传输系统验收2功能测试
    整数范围与类型转换
    实验三电子公文传输系统1个人贡献
    socket测试
    电子公文传输系统验收4开发基础
    Web服务器1socket编程
    算法测试(课上测试)
  • 原文地址:https://www.cnblogs.com/jmlkk/p/8669239.html
Copyright © 2011-2022 走看看