码迷,mamicode.com
首页 > 其他好文 > 详细

软件工程第三次作业

时间:2018-03-29 22:40:03      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:com   组成   ++   sum   .com   log   void   pre   auth   

题目(1):最大连续子数组和(最大子段和)

背景

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

编写测试类

采用动态规划法,时间复杂度和空间复杂度都相对较少具体代码如下:

import java.util.*;
/**
 * 
 * @author Bill
 * 
 * 2018/03/29
 */
public class Maxsum {
    public static int test(int[] array)
    {
        int [] maxsum=new int[1000];
        int SUM=0;
        int Count = array.length;
        for(int i=1;i<Count;i++)
        {
            if(maxsum[i-1]>0)
                maxsum[i]=maxsum[i-1]+array[i];
            else
                maxsum[i]=array[i];
            if(maxsum[i]>SUM)
                SUM=maxsum[i];
            
                  
        }
        return SUM;
     }
}

编写测试程序
测试程序主要运用条件组合覆盖来对测试类测试,具体代码如下:


import static org.junit.Assert.*;


import org.junit.Test;

public class MaxsumTest {

    @Test
    public void test() {
            int[] sum=new int[]{-4,-1,-4,-10,-5,-1};//均为负数时
            int s=new Maxsum().test(sum);
            assertEquals(0,s);
    }
    
    @Test
    public void test1() {
            int[] sum=new int[]{1,2,-3,4,5,6,-7};
            int s1=new Maxsum().test(sum);
             assertEquals(15,s1);  
     
    }
    
    @Test
    public void test2() {
        int[] sum=new int[]{-1,-2,-23,-14,-5,67,-7};
        int s2=new Maxsum().test(sum);
         assertEquals(67,s2);  
 
    }
    
    @Test
    public void test3() {
        int[] sum=new int[]{-1,-14,5,-67};
        int s3=new Maxsum().test(sum);
         assertEquals(23,s3);  
 
    }

}

测试结果

技术分享图片

Coding:

测试的类 测试程序

软件工程第三次作业

标签:com   组成   ++   sum   .com   log   void   pre   auth   

原文地址:https://www.cnblogs.com/wamgzuo/p/8672110.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!