博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
起一个洋气一点的名字
阅读量:7044 次
发布时间:2019-06-28

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

软件工程(2018)第三次个人作业

  • 前言:

    第三次作业还是一个个人作业,我选择了第一个题目最大连续子数组和的,下面是对该问题的复述:
  • 问题复述:

    给定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。
  • 代码编写

    通过上述百度百科的内容和c程序代码,自己通过学习研究,对最大字段和有了新的思路,了解了算法动态规划法,再通过请教别的同学,用Java编写的代码如下:
public class third {    public static void main(String[] args) {        third th = new third();        int result = th.maxsub(6, new int[]{1,2,3,4,5,6});        System.out.printf("result = %d",result);    }   public int maxsub(int count,int a[])     {          int[] b = new int[100];          int i,max;          b[0]=a[0];          max=b[0];          for(i=1; i
0) b[i]=b[i-1]+a[i]; else b[i]=a[i]; if(b[i]>max) max=b[i]; } return max; }}
  • 程序框图

    为了更方便的后面的单元测试,所以对这段用动态规划法做的程序进行了程序框图的设计,下面是用word文档做的框图的截图,图像有点大,所以把框图的结构改了一下,自我感觉还可以,希望别人都能看明白,哈哈。
    1345328-20180331204725248-1420937587.png
  • Junit单元测试

    对该程序进行单元测试,首先确定用判定条件覆盖,根据上面的程序流程图来选择五组数据,从而来测试程序的正确性。下面是五组测试数据:
  • ① 1,{5}
  • ② 5,{1, 3, 5, -2, 1}
  • ③ 5,{1, 3, -5, -2, 1}
  • ④ 5,{-1, 3, 5, -2, 1}
  • ⑤ 5,{-1.3.-5,-2,-1}
    下面是在eclipse中测试的程序用例:

1345328-20180331205832336-740898356.png

下图是对这些用例的检测分析:
1345328-20180331210136589-363484525.png

  • 总结与反思

    这次作业是单人作业的最后一次,也是一次对问题的实际解决。从本次作业中还是能找到自己的不足,希望在以后的作业中能够脚踏实地,认真思考,因为自己在java上还是菜鸡级别的人,能完成这次作业,要灰常的感谢我的多人组队的队长同学,希望以后能跟队长看齐,加油!!

PS:我的

转载于:https://www.cnblogs.com/liangheng/p/8684264.html

你可能感兴趣的文章
Linux常用基本命令(笔记)
查看>>
阿姆斯特朗数
查看>>
“将偷懒进行到极致!”——EasyCode.Net代码生成器图文评测
查看>>
JavaScript 变量提升
查看>>
mysql实现递归查询
查看>>
jsonp
查看>>
元素的属性及分析
查看>>
Ajax中location.href无法跳转的解决办法
查看>>
fedora23没有/var/log/messages &如何禁用后台自动更新软件?
查看>>
Linux基础_软链接,硬链接
查看>>
Java-枚举类,注解
查看>>
MySQL 的Coalesce函数
查看>>
SQL 无法连接服务器
查看>>
出错:未解决
查看>>
js数据访问的艺术
查看>>
2017 多校4 Wavel Sequence
查看>>
LR中日志参数的设置
查看>>
input子系统
查看>>
JDK5.0新特性-增强for循环
查看>>
myBatis
查看>>