最大连续子数组和

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

题意:

  含有N个数的数组,求最大的连续子段的和,动态规划:递推公式是dp[i] = max{dp[i-1] + arr[i],arr[i]}

参考代码:

  Github地址:点我一下

 1 public class dp {
2 public int max_string(int arr[]){
3 if(arr == null || arr.length <= 0){
4 return 0;
5 }
6 int len = arr.length;
7 int Max=0x8000000;
8 int this_max=0;
9 for(int i=0; i<len; i++){
10 Max = Math.max(Max, this_max=this_max+arr[i]>0?this_max+arr[i]:0);
11 }
12 return Max;
13 }

单元测试

1.覆盖标准

  条件组合覆盖:使得每个判定中条件的各种可能组合都至少出现一次。

2.流程图:

3.测试代码:

 1 public class dp_test {
2 dp d = null;
3 @Before
4 public void set_up(){
5 d = new dp();
6 }
7 @Test
8 public void test_1() {
9 int arr[]={-1,-1,-1,-1,-1};
10 Assert.assertEquals(d.max_string(arr), 0);
11 }
12 @Test
13 public void test_2() {
14 int arr[]={0,0,0,0,0};
15 Assert.assertEquals(d.max_string(arr), 0);
16 }
17 @Test
18 public void test_3() {
19 int arr[]={1,2,3,4,5};
20 Assert.assertEquals(d.max_string(arr), 15);
21 }
22 @Test
23 public void test_4() {
24 int arr[]={-2,11,-4,13,-5,-2};
25 Assert.assertEquals(d.max_string(arr), 20);
26 }
27 @Test
28 public void test_5() {
29 int arr[]={1,2,-4,8,-1};
30 Assert.assertEquals(d.max_string(arr), 8);
31 }
32
33 }

 4.测试结果

最新文章

  1. ASP.NET Web API 控制器执行过程(一)
  2. 【抄】更改eclipse配置
  3. 《构建之法》第8、9、10章 读书笔记和Sprint总结
  4. 关于IE6/7的 inline-block
  5. vijosP1049 送给圣诞夜的礼品
  6. IP 网际协议
  7. JavaScript两个变量交换值(不使用临时变量)
  8. Java jdk 快速配置
  9. ### Cause: org.apache.ibatis.binding.BindingException: Parameter &#39;name&#39; not found. Available parameters are [arg1, arg0, param1, param2]
  10. python第一周总结
  11. Java中语法与C/CPP的区别
  12. MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example 1.4 Labeling the Map
  13. 【SDOI 2017】龙与地下城(组合)
  14. Bootstrap3基础 btn-xs/sm... 按钮的四种大小
  15. 1.1使用java数组,并开始封装我们自己的数组
  16. .net开发中,C# DateTime.Now 取出的时间含有星期解决办法
  17. Thread中断线程的方法
  18. Scrum立会报告+燃尽图(十一月二十三日总第三十一次):界面修改及新页面添加
  19. HTTP浏览器缓存机制
  20. 剑指Offer——数字在排序数组中出现的次数

热门文章

  1. HC(Histogram-based Contrast) 基于直方图对比度的显著性
  2. Idea进行java应用的远程调试Remote debugging
  3. 如何利用Prometheus监控你的应用(此列子是对于golang sdk进行运用)
  4. 微信小程序_快速入门01
  5. springcloud整合config组件
  6. 从源码层面深度剖析Redisson实现分布式锁的原理(全程干货,注意收藏)
  7. SharkCTF2021 Babyhttp &amp;&amp; get_or_lose
  8. vue3.x自定义组件双向数据绑定v-model
  9. git常用的一些简单命令
  10. springboot读取配置文件中的信息