1、 由一维数组改为二维数组难度增加很大,刚看到题目想到的就是穷举法,由第一个元素开始向右、下、右下三个方向扩展依次计算子数组的和并进行比较记录最大和,然后再从下个元素开始重新进行上一个元素的操作直到找出最大子数组的和。
2、由于时间复杂度太高,便开始讨论其他的方法,本来想着按照我们一位数组计算最大子数组的方法,发现并不适用。
3、接下来我们想到的是从整个数组开始,计算边框和是否有负数,有负数就去掉该边框,继续计算,在试验的过程中发现会把最大子数组包含的某些元素也去掉导致结果出错。
4、最终想到的是将二维数组各列进行压缩变成若干一位数组,用一位数组最大子数组的计算方法分别找出个一位数组的最大结果,然后再综合找出最大的。
感受:
首先,由一维扩展到二维,难度是几何倍数增长的,自己想的话可能要经过好长时间,走好分多弯路才有可能找出解决的方法,也只是有可能而已,而通过两个的讨论,可以发现彼此忽略的地方,能够更快的找到比较正确的方法来解决问题。