结对开发之二维数组探讨

1、 由一维数组改为二维数组难度增加很大,刚看到题目想到的就是穷举法,由第一个元素开始向右、下、右下三个方向扩展依次计算子数组的和并进行比较记录最大和,然后再从下个元素开始重新进行上一个元素的操作直到找出最大子数组的和。

2、由于时间复杂度太高,便开始讨论其他的方法,本来想着按照我们一位数组计算最大子数组的方法,发现并不适用。

3、接下来我们想到的是从整个数组开始,计算边框和是否有负数,有负数就去掉该边框,继续计算,在试验的过程中发现会把最大子数组包含的某些元素也去掉导致结果出错。

4、最终想到的是将二维数组各列进行压缩变成若干一位数组,用一位数组最大子数组的计算方法分别找出个一位数组的最大结果,然后再综合找出最大的。

 

感受:结对开发在此次课堂作业中,比上次有了更加明显的显现,我们在在比较轻松的题目中我们很容易找到答案,但是在遇到不是那么容易的题目途中,我们更加倾向于去寻找帮助,看自己的队友有什么思路,能给自己带来些许思路。在这个就像我们在起初的设计时,预想着使用剔除法,姑且这样称呼,将自己的初始矩阵设定后,采取四面削减的策略,排除行或列的和是负值的行和列,以达到最终目的,后来想到此种方法的缺点是,有可能在行排除的时候第一次就剔除了被选中的行,这种方法是从反面思考的方法,借鉴了数学中的反证法,我感觉是一种思路,有待进一步深入探讨。

结对开发之二维数组探讨_第1张图片

你可能感兴趣的:(结对开发之二维数组探讨)