1、软件工程结对开发之求一维数组中连续最大子数组之和

题目:返回一个整数数组中最大子数组的和。
要求:
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为O(n)。

设计思路:

    在上课期间老师留了这道题目,让我们开始讨论,我的合作伙伴檀威首先打开了编程界面,开始写代码了,我说咱们不能这样,还没有思路呢,我们应该先在纸上写好设计思路,理清问题的解决思路,最后咱们再编写代码实现,他说是啊,是我太心急了,以前没养成好习惯。

    我们首先想了最笨的方法,就是求出所有子数组的和,然后找出最大的和。显然这不是最简便的方法,我俩都不太满意。一会儿,我们都陷入了沉思,似乎都没有更好的解决办法,转眼间,下课了。。。

   在周三下午我们又开始商量这个问题,首先我们在一张纸上列出了几组数据,从数据出发,找出最简便的解决办法。后来我们终于发现,最大子数组的第一个数字肯定得大于零,且得判断只有前面子数组的和大于零,才能加上后面的数,而且结果是最大的,这样一步步推导就得到了结果。

体会:

这是比较正式的一次结对合作开发,以前基本就是某个人自己做,其他人就是打酱油而已。但这次合作感觉两个人的力量是巨大的,团结就是力量,其中避免不了摩擦,我们要学会面对,并正确的解决问题,我们会变得更加强大,更加适合团队合作!

工作照

posted @ 2015-03-18 20:22  Jameslige  阅读(116)  评论(0编辑  收藏  举报