博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
软件第三次作业
阅读量:6342 次
发布时间:2019-06-22

本文共 1949 字,大约阅读时间需要 6 分钟。

一、选择题目

  问题: 给定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。

二、代码编写

这部分代码主要借鉴于的这篇博客,并进行了修改。

Coding:

/** * Demo类 * @author haozhirong * version 1.0 * */public class Demo {    /**     * 求字段和的最大值     * @return     */    public int getSubarrayMax(int[] arr){        if(arr.length==0||arr==null) return 0;        //当前最大连续子数组和        int max=arr[0];        //尝试计算的最大连续子数组和        int submax=arr[0];        for(int i=1;i
max)//每更改完sub的值,马上更新当期最大连续子数组和 max=submax; } if(max<=0) return 0; else return max; }}

三、设计测试

1 逻辑测试方法简介

逻辑测试方法 介绍
语句覆盖 每条语句至少执行一次
判定覆盖 判定的每个分支至少执行一次
条件覆盖 判定的每个条件应取到各种可能的值
判定-条件覆盖 同时满足判定覆盖和条件覆盖
条件组合覆盖 判定中各种条件的每一种组合至少出现一次

注:参考

2 代码流程图

1345516-20180401173001430-681567075.png

3 设计测试用例

  在这里忽略掉循环中对数组的循环判定和arr是否为空数组的判定,共有3个判定条件。这里用条件组合覆盖结果为8种可能。

  1. submax<=0,submax>max,max<=0
  2. submax<=0,submax>max,max>0
  3. submax<=0,submax<=max,max<=0
  4. submax<=0,submax<=max,max>0
  5. submax>0,submax>max,max<=0
  6. submax>0,submax>max,max>0
  7. submax>0,submax<=max,max<=0
  8. submax>0,submax<=max,max>0
  9. arr数组为空

  通过分析得出,以上第5、6、7种可能永远都不可能满足。所以只需覆盖其他组合。

测试用例组数 输入数组 覆盖的组合号 执行路径
1 {0,8,-4,-5,2} 2,8,4 ACBDBDADF
2 int [0] 9
3 {-11,-2,-4} 1,3 ACADE
4 {0,0,0} 1,3 ADADE

4 设计测试代码及结果

import static org.junit.Assert.*;import org.junit.Test;public class DemoAutoTest {    @Test    public void testGetSubarrayMax() {        assertEquals(8,new Demo().getSubarrayMax(new int[]{0,8,-4,-5,2}));    }    @Test    public void testGetSubarrayMax1() {        assertEquals(0,new Demo().getSubarrayMax(new int[]{-11,-2,-4}));    }    @Test    public void testGetSubarrayMax2() {        assertEquals(0,new Demo().getSubarrayMax(new int[]{0,0,0}));    }    @Test    public void testGetSubarrayMax3() {        assertEquals(0,new Demo().getSubarrayMax(new int [0]));    }}

1345516-20180401173055686-1888208251.png

测试成功

转载于:https://www.cnblogs.com/haozhirong/p/8687397.html

你可能感兴趣的文章
解读volatile
查看>>
zookeeper安装部署
查看>>
centos6——初始化脚本
查看>>
linux I/O优化 磁盘读写参数设置
查看>>
中断处理 I/O内存
查看>>
Java中的transient关键字
查看>>
私有网盘nextcloud 12的问题处理及优化
查看>>
思科设备VLAN之间通信配置
查看>>
mysql排错 (一)
查看>>
20160318作业
查看>>
关于MySQL的几点安全配置
查看>>
zabbix监控H3C的接口流量
查看>>
HAProxy的压缩功能
查看>>
shell 简单计算器
查看>>
浅析Python进行接口自动化
查看>>
windows及linux环境下永久修改pip镜像源的方法
查看>>
表格表单及样式重置、特性
查看>>
八月个人考核
查看>>
linux网卡绑定
查看>>
Oracle技术之缺少log_archive_config导致归档路径被禁用
查看>>