您的位置:首页 > 其它

软件工程结对作业03

2016-04-15 18:36 169 查看
同组成员(尤凯丽):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分钟。我仔细读程序后,根据不同的数组值的情况分别测试,结果正确。

体会

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

如何解决冲突

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

合作照片:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: