• 软件工程第三次作业


    题目(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-内置数据结构listdictset
    Python-内置结构listsetdicttuple
    Python-内置数据结构
    Python-函数作用域和集合列表字典元祖
    Python-函数参数和文档
    Python-while循环+函数
    Python-分支循环
    Python基础
    五、Jmeter-数据库数据进行参数化
    mysql索引:四种类型,两种方法
  • 原文地址:https://www.cnblogs.com/wamgzuo/p/8672110.html
Copyright © 2020-2023  润新知