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

软件工程结对作业03

时间:2016-04-15 20:06:04      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

同组成员(尤凯丽):http://www.cnblogs.com/love528/

设计思想

    在有负数的情况下,要保证找出的子数组的和是最大的,那么最小的负数是一定不会在子数组中的,我们将最小的负数作为一个断点,放在非循环数组的第一位,这样它之前的数就不需要先考虑了。例如:当循环数组为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分钟。我仔细读程序后,根据不同的数组值的情况分别测试,结果正确。

体会

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

如何解决冲突

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

合作照片:

技术分享

软件工程结对作业03

标签:

原文地址:http://www.cnblogs.com/1443188449qq/p/5396548.html

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