• 软件工程第三的作业


    题目要求

    最大连续子数组和(最大子段和)

    背景

    问题: 给定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。
    -- 引用自《百度百科》

    算法思考

    看到题目,首先要思考如何能能够找到最大的数的数组的个数。这里参考老师给的算法采用暴力求解的办法。首先把要寻找的数据放入数组之中,这里我们假设数组名为a[],从a0开始,先加a1,然后比较a0与a0+a1的大小,把较大的数放入变量sum中,然后再用a0+a1+a2,得出的结果再和前者更大的数进行比较,大的数放入sum中...以此类推,直至所有的数遍历完成 找到最大的数组,并记录下他们的下坐标。

    编译代码

    代码清单
    package third;
    public class zzx 
    {
        public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		int a[]={-6,10,-5,-3,-7,-1,-1};
    		MaxArry(a,7);
    		}
       public static void MaxArry(int []a,int n) {
    	int top=0,low=0;
    		int sum=-9999;
    		int num=7;
    		int i,j,k;
    		for(i=0;i<n;i++)
    		{
    			for(j=i;j<n;j++)
    			{
    				int s=0;
    				for(k=i;k<=j;k++)
    					s=s+a[k];
    				}
    				if(s>sum)
    				{
    					sum=s;
    					low=i;
    					top=j;
    				}
    			}
    		}
    		low = low + 1;
    		top = top + 1;
    		System.out.println("start="+low);
    		System.out.println("end="+top);
    		System.out.println("sum="+sum);
    	}
    
    }
    
    测试结果


    覆盖方法的比较与选择

    (1)语句覆盖:使得程序中每个语句至少都能被执行一次。

    (2)判定覆盖:使得程序中每个判定至少为T和F各一次。

    (3)条件覆盖:使得判定中的每个条件获得各种可能的结果。

    (4)判定/条件覆盖:同时满足判定覆盖和条件覆盖。

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

    这里选择的是条件覆盖

    1、条件1:s>sum。

    2、条件2:s<=sum。

    样例1{-2,11,-4,13,-5,-2}测试用例1为给定测试用例,结果为20。

    总结

    通过对实际例子的编写,对JAVA语言有了一次更加深刻的了解。提高自己的使用软件熟练程度。在这次练习中,我学到了很多东西。在自己的努力以及同学的帮助下,逐渐提高了自己的能力。之前都是在eclipse上编程,查看运行结果。但是没有实际动手去测试程序,了解这个软件的运行模式。

    代码托管

    传送-【https://coding.net/u/zzixuk/p/maxmaxmax/git?public=true】

  • 相关阅读:
    316 Remove Duplicate Letters 去除重复字母
    315 Count of Smaller Numbers After Self 计算右侧小于当前元素的个数
    313 Super Ugly Number 超级丑数
    312 Burst Balloons 戳气球
    309 Best Time to Buy and Sell Stock with Cooldown 买股票的最佳时间含冷冻期
    Java 类成员的初始化顺序
    JavaScript 全局
    HTML字符实体
    Java中的toString()方法
    JavaScript 弹窗
  • 原文地址:https://www.cnblogs.com/z-zixu/p/8686525.html
Copyright © 2020-2023  润新知