最大连续子数组和与JUnit测试

【题目】最大连续子数组和(最大子段和)


  • 背景

    问题: 给定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。
    -- 引用自《百度百科》

    • 具体要求

    (1)要求写出可运行的完整代码提交至GitHub或者Coding.net系统中,并将代码地址附到博客内。
    (2) 请从语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖五个覆盖标准中,任选一个标准设计测试用例。
    (3) 请利用自动测试工具对程序进行测试。
    (4) 请将程序运行结果和自动测试分析结果截图附到博客中。

    • 算法与代码实现

      抛弃的算法:通过题目要求,首先想到的是暴力求解,即利用循环,求出每一个子数组的值并进行比较,求出其中子数组的最大值。但是由于此方法效率较低,于是思考下一个方法。

      新的算法:我们首先分析出,当子数组和最大时,该子数组的首位和末位(存在的情况下),一定应为正值,且该子数组一定需要大于零才可作为新的最大的子数组并继续向下运算;否则,我们将抛弃他,并以下一位作为新的运算子数组。我们设每次运算的子数组为ThisSum,新的临时最大的子数组为MaxSum,根据此特性,可以列出公式:Array[i] = MAX(Array[i-1] + A[i] , A[i])

    根据上述公式,已将具体代码提交到GitHub上,便不在此赘述,点此查看Github源代码

    • 流程图与测试

    根据写出的代码,画出流程图如下:
    1643171-20190418185619050-1716397905.png

    为了寻求合适而全面的测试样例,我找出循环内部的两条判断语句的流程,选用判断条件覆盖。

    线段号ThisSum>MaxSumThisSum<0
    Blue1Yes
    Yellow2NoYes
    Red3NoNo

    选用的测试样例数组如下:

    数组备注
    Array1:{ }取边界值Ø测试
    Array2:{1,-2,3,4,-5}1->2->1->1->3
    Array3:{1,2,3,4,5}辅助测试
    Array4:{-1,-2,-3,-4,-5}全为负值 故最大为Ø

    根据以上选用的测试样例,测试结果如下:
    Array1:1643171-20190418195430603-1370130668.png

    Array2:1643171-20190418195824638-1649854299.png

    Array3:1643171-20190418195502713-208031916.png

    Array4:1643171-20190418195531838-566755707.png

    自动单元测试JUnitTest结果如下:

    1643171-20190418194939167-323046570.png

    到此,对最大连续子数组求和的内容结束。

    posted @ 2019-04-18 19:27 cocoaman 阅读(...) 评论(...) 编辑 收藏
    刷新评论刷新页面返回顶部

转载于:https://www.cnblogs.com/cocoaman/p/10729553.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/279647.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

笔记本电源适配器为什么总坏_为什么某些交流适配器和电源会发出啸叫声?

笔记本电源适配器为什么总坏Most of the time our AC adapters and power supplies tend to be quiet, but what does it mean when one makes a whining noise? Should you be concerned? Today’s SuperUser Q&A post has the answers to a worried reader’s question…

4412 字符类设备的设备号

一、静态申请字符类设备号 字符类设备函数在文件"include/linux/fs.h"中内核提供了三个函数来注册一组字符设备编号&#xff0c;这三个函数分别是 register_chrdev_region()alloc_chrdev_region()register_chrdev()register_chrdev_region()是提前知道设备的主次设备…

monogdb操作system.*权限

mongodb roles system.roles集合删不掉 当你自定义了特权(角色): db.createRole({role: "dropSystemViewsAnyDatabase",privileges: [{actions: [ "dropCollection" ],resource: { db: "", collection: "system.roles" }}],roles: []}…

如何发现假库存照片(并将合适的人归于属性)

Spammers and other unscrupulous advertisers are always looking for new ways to get you click on their pages. One of the latest tactics is to steal popular and useful stock images—like the kind you sometimes see in news articles—and re-upload them elsewhe…

Mysql Hunter

一、简介自动化实施的过程中&#xff0c;我们通常都面临一个棘手的问题&#xff1a;数据的准备和恢复。即在成功执行一个自动化用例时&#xff0c;我们可能需要一定的数据前提&#xff0c;而为了使得整个前提不至于被其他的用例破坏&#xff0c;以至于我们有时不得不在自动化用…

C6748_UART(5) - UART寄存器

1、FIFO控制寄存器&#xff08;FCR&#xff09;RXFIFTL&#xff1a;接收FIFO中断触发(当FIFO中的数据量刚到达所要求&#xff08;trigger level&#xff09;的时候会产生中断);DMAMODE1:如果FIFO使能的话此位可以使能DMA模式。TXCLR&#xff1a;发送FIFO清除。RXCLR&#xff1a…

如何在Windows 10上限制Wi​​ndows Update的下载带宽

Windows 10’s Fall Creators Update gives you more control of Windows Update’s downloads and uploads. You can now set a download bandwidth limit, ensuring Windows Update won’t hog your Internet connection with its background downloads. Windows 10的Fall Cr…

Elasticsearch嵌套查询

2019独角兽企业重金招聘Python工程师标准>>> 一、背景 最近在做基于宴会厅档期的商户搜索推荐时&#xff0c;如果用传统平铺式的mapping结构&#xff0c;无法满足需求场景&#xff0c;于是用到了Elasticsearch支持的Nested(嵌套)查询。 二、普通对象与嵌套对象的索引…

写给深圳首期Python自动化开发周未班的信

你是否做了正确的决定&#xff1f; 深圳首期周未班的同学们大家好&#xff0c;我是Alex, 老男孩教育的联合创始人&#xff0c;Python项目的发起人&#xff0c;51CTO学院连续2届最受学员喜爱的讲师&#xff0c;中国最早一批使用Python的程序员&#xff0c;当然还有一堆头衔&…

网站跳出率的相关要点介绍

今天小峰seo博客和大家一起来探讨关于“网站跳出率的相关要点”&#xff0c;这里大体是分为三大要点&#xff1a;首先是进入的流量渠道&#xff0c;然后就是综合流量速度和内容的质量问题&#xff0c;细的来说就是我们的网站进来的用户是搜索什么关键词来的是通过百度还是搜狗或…

如何使用PowerShell提升开发效率(以Windows Embedded CE为例)

简介 本文讲述如何使用Powershell通过RAPI来控制Windows Embedded CE和Windows Mobile设备。 缘由 我入行的时候是做AS400 RPG和UNIX C开发的&#xff0c;所有开发环境都是字符界面&#xff0c;因此习惯了vigrepmake的开发模式。后来开始做Windows的开发&#xff0c;开始也不大…

视频图像传输学习笔记-基础小知识(一)

摄像头DVP与MIPI区别 DVP是并口&#xff0c;需要PCLK、VSYNC、HSYNC、D[0&#xff1a;11]——可以是8/10/12bit数据&#xff0c;看ISP或baseband是否支持&#xff1b;总线PCLK极限大约在96M左右&#xff0c;而且走线长度不能过长&#xff0c;所有DVP最大速率最好控制在72M以…

java程序员面试交流项目经验

粘贴自&#xff1a;https://blog.csdn.net/wangyuxuan_java/article/details/8778211 1&#xff1a;请你介绍一下你自己 这是面试官常问的问题。一般人回答这个问题过于平常&#xff0c;只说姓名、爱好、工作经验&#xff0c;这些简历上都有。其实&#xff0c;面试官最希望知道…

Windows7旗舰版磁盘分区详解—附分区步骤截图

最近工作中配置使用联想的Thinkpad TL系列本本.当然原装的系统时刚发布的Windows RTM旗舰版.在考虑买之前也参考了戴尔 苹果的等等, 但个人私下也是一直在用Tinkpad系列, 相比其他的品牌本人还是比较钟情于Tinkpad 非常实用的键盘. 以及简洁的外观.买回来一看这个TL系列原装的系…

outlook存档邮件_如何在Outlook 2013中存档电子邮件

outlook存档邮件We’ve always been told that backing up our data is a good idea. Well, that same concept can extend to email as well. You may want to archive your email every so often, such as monthly, quarterly, or even yearly. 我们一直被告知备份数据是一个…

洛谷 P1736 创意吃鱼法(多维DP)

题目描述 回到家中的猫猫把三桶鱼全部转移到了她那长方形大池子中&#xff0c;然后开始思考&#xff1a;到底要以何种方法吃鱼呢&#xff08;猫猫就是这么可爱&#xff0c;吃鱼也要想好吃法 ^_*&#xff09;。她发现&#xff0c;把大池子视为01矩阵&#xff08;0表示对应位置无…

计算机组装和维护_如何构建自己的计算机,第二部分:组装在一起

计算机组装和维护So you’ve selected your parts, double- and triple-checked their compatibility, and waited for economy shipping to bring them all to your door. It’s time to get to the fun part: putting them all together. 因此&#xff0c;您已经选择了零件&a…

Python学习-集合的常见用法

st [1,2,3,4,5] ct [2,3,4,5,76] list set(["name", list, try]) list2 set(["name", list, try, but, test]) # 两个列表去重&#xff0c;利用集合st set(st) #设为集合 ct set(ct) print(st, type(st))sct0 st.union(ct) #并集 sct st | ct …

Autofac之自动装配

从容器中的可用服务中选择一个构造函数来创造对象&#xff0c;这个过程叫做自动装配。这个过程是通过反射实现的 默认 思考这么一个问题,如果注册类型中存在多个构造函数,那么Autofac会选择哪一个来创建类型的实例 答案是"尽可能最多参数" class ConstructorClass {p…

对Emlog 6.0 Beta的完整代码审计过程

Emlog 6.0 beta版本&#xff0c;这可能是最后一篇关于PHP语言CMS的代码审计文章&#xff0c;此次将详细记录完整的审计过程。 文章基本上完整记录小东的对此CMS审计过程&#xff0c;或许显得繁琐&#xff0c;但代码审计的过程就是这样&#xff0c;发现可能项&#xff0c;然后精…