最大连续子数组和--dp
2024-09-03 01:44:39
最大连续子数组和
问题: 给定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.测试结果
最新文章
- ASP.NET Web API 控制器执行过程(一)
- 【抄】更改eclipse配置
- 《构建之法》第8、9、10章 读书笔记和Sprint总结
- 关于IE6/7的 inline-block
- vijosP1049 送给圣诞夜的礼品
- IP 网际协议
- JavaScript两个变量交换值(不使用临时变量)
- Java jdk 快速配置
- ### Cause: org.apache.ibatis.binding.BindingException: Parameter &#39;name&#39; not found. Available parameters are [arg1, arg0, param1, param2]
- python第一周总结
- Java中语法与C/CPP的区别
- MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example 1.4 Labeling the Map
- 【SDOI 2017】龙与地下城(组合)
- Bootstrap3基础 btn-xs/sm... 按钮的四种大小
- 1.1使用java数组,并开始封装我们自己的数组
- .net开发中,C# DateTime.Now 取出的时间含有星期解决办法
- Thread中断线程的方法
- Scrum立会报告+燃尽图(十一月二十三日总第三十一次):界面修改及新页面添加
- HTTP浏览器缓存机制
- 剑指Offer——数字在排序数组中出现的次数
热门文章
- HC(Histogram-based Contrast) 基于直方图对比度的显著性
- Idea进行java应用的远程调试Remote debugging
- 如何利用Prometheus监控你的应用(此列子是对于golang sdk进行运用)
- 微信小程序_快速入门01
- springcloud整合config组件
- 从源码层面深度剖析Redisson实现分布式锁的原理(全程干货,注意收藏)
- SharkCTF2021 Babyhttp &;&; get_or_lose
- vue3.x自定义组件双向数据绑定v-model
- git常用的一些简单命令
- springboot读取配置文件中的信息