zoukankan      html  css  js  c++  java
  • 软件工程第三次作业

    题目(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:

    测试的类 测试程序

  • 相关阅读:
    算法-排序(二)-快速排序
    算法- 排序(一)
    python(十四)新式类和旧式类
    Python(十三)python的函数重载
    django(二)中间件与面向切面编程
    MySQL(二)MySQL的启动或链接失败
    django(一)验证码
    python(七) Python中单下划线和双下划线
    Python(十) Python 中的 *args 和 **kwargs
    python(六)列表推导式、字典推导式、集合推导式
  • 原文地址:https://www.cnblogs.com/wamgzuo/p/8672110.html
Copyright © 2011-2022 走看看