• 软件工程第三次作业


    问题描述

    题目(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。

    运行代码

    这个代码嵌套了三层循环来找最大子数和,虽然执行效率不是那么高,但是对于来说是思路相对比较清晰的一种算法,输入用的也是循环输入。计算最大子数和部分用的是一个函数。
    完整代码[最大子数和](https://coding.net/u/wu5945729/p/zishuhe/git/blob/master/01?public=true)

    单元测试

    感觉这是第一次真正的写单元测试,还是有点困难的,首先并不知道怎么写单元测试的代码,然后看了其他同学是怎么写的,才一点点有了思路,但是总是会有一些问题,我最大的问题就是我缺少了头文件Assert,因为一开始也并不明白Assert这个函数的作用,但是现在懂了。
    1.流程图

    2.条件覆盖
    有三组测试代码
    a[3]={4,5,6}最大子数和为15; 本组都是正数
    a[4]={-1,5,-6,9}最大子数和为9; 本组既有正数又有负数
    a[5]={-1,-3,-5,-2,-4}根据题意最大子数和为0;本组全为负数
    3.测试单元代码
    这部分是我花了大把时间的测试代码

    单元测试成功

    总结

    这次作业收获很多,代码部分因为大一时候做的就是类似差不多的题,所以感觉就还好,但是测试单元部分真的是难倒我了,因为之前真的没有接触过,一开始什么都不知道,然后通过查了一些资料和参考同学些的之后才大概明白了什么意思,但是总是错在一些细节上面,就很无奈。但是最重要的是最后我测试成功了,怎么说我也是涨了见识了。花了一天的时间也不是很亏。

  • 相关阅读:
    跨浏览器的事件处理程序
    开发技术文档汇总
    JVM知识树
    JDK1.8新特性(一)
    CAS
    Redis集群之修改节点IP
    阿里云服务器 发送邮箱 STMP 25端口 465端口问题 Javamail 25被禁用
    日志log4j到Logback的使用(主要是Logback)
    ThreadLocal原理和 java类全局静态变量在多线程中数据混乱问题
    SpringMVC拦截器拦截页面(坑)
  • 原文地址:https://www.cnblogs.com/WQiong/p/8681624.html
Copyright © 2020-2023  润新知