软件工程结对作业03

同组成员(张雪晴):http://www.cnblogs.com/1443188449qq/

设计思想

    在有负数的情况下,要保证找出的子数组的和是最大的,那么最小的负数是一定不会在子数组中的,我们将最小的负数作为一个断点,放在非循环数组的第一位,这样它之前的数就不需要先考虑了。例如:当循环数组为1,2,-5,6,-1时,最小的负数是-5,我们就可以将它断成非循环数组-5,6,-1,1,2。这样就可以算出最大和的子数组了。如果没有负数的话,从哪里断开就是无所谓的了,但是为了编程方便,我们还是从最小的数处断开。

源代码

import java.util.Scanner;

public class Maxsum_2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int max,a;
        System.out.println("请输入数字的长度:");
        Scanner sc1 = new Scanner(System.in);
        int size = sc1.nextInt();
        int num[]=new int [size];
        int num2[]=new int [size];
        System.out.println("请输入数字:");
        for(int i=0;i<size;i++)
        {
            num2[i]=sc1.nextInt();
        }
        int min=0,minnumber=num2[0];
        for(int i=0;i<size;i++)
        {
            if(num2[i]<minnumber)
            {
                min=i;
                minnumber=num2[i];
            }
        }
        for(int i=0;i<size;i++)
        {
            num[i]=num2[(i+min)%size];
        }
        max=num[0];
        a=num[0];
        for(int i=1;i<size;i++)
        {
            if(max+num[i]>=num[i])
            {
                if(num[i]<0&&a<max+num[i])
                    a=max;
                max=max+num[i];                
            }
            else
                max=num[i];
        }
        if(a>max)
            max=a;
        System.out.print(max);
    }
}

 

运行结果截图

 

合作中的过程

在讨论过此次程序的具体要求后,同组同学(张雪晴)做了程序分析,并完成代码编程,据说历时16分钟。我仔细读程序后,根据不同的数组值的情况分别测试,结果正确。

体会

两个人的合作可以扬长避短,更快的完成任务。当然,要随时提高自身能力,才能慢慢成长。(最有效率的团队成员可能是水平相当的两个人)

如何解决冲突

当对同一个问题产生不同看法时,不要认为自己的就是最好的,尽量理解对方的想法。互相体谅,互相宽容,该让步的时候要让步。

合作照片:

posted @ 2016-04-15 18:29  没有比脚更长的路  阅读(127)  评论(0编辑  收藏  举报