二维数组求其中子数组的最大和

 二维数组相对来说比一维数组复杂,因为其子数组的情况相对来说比较多,每一个数所在的子数组,有各种方向的,有一维的,二维的,所以不能用一维数组的方法来看二维数组。就拿二维数组:1 2 34 5 67 8 9来说2所在的子数组有1 2,1 2 32 3,2 5,2 5 81 2 4 5,2 5 3 61 2 3 4 5 61 2 4 5 7 82 3 5 6 8 91 2 3 4 5 6 7 8 9;各种情况,其中既有一维的也有二维的,并且其长度也各不相同,所以来说比较麻烦,列出每一个数所在的子数组显然地不合适的,并且其中好多都是重复的,不可取,所以那些重复的部分只算一遍就行了。

总体来说也就是把数组中的的数依次循环,每次循环到该元素时,就以该元素为标准,为数组的第一个元素,其所在的列与行为标准右下角的所有元素组成新的二维数组,计算在此新的数组中,第一个元素所在的所有的子数组的和,直到循环到最后一个元素为止。以二维数组1234为例,1为标志元素时,其子数组有,12,13,1234三种情况,标志元素为2时其子数组有24,当标志元素为3时其子数组有34,当标志元素为4时就结束。此方法就相当于对各个子数组进行了很好的排序,做到有规律按序求和,这样就不会漏掉所有的子数组,也不会重复。

拿以下的三维数组为例

1 2 3

4 5 6

7 8 9

2为标志元素先求2 3的和,再求2 5,求2 3 5 6,求2 5 82 3 5 6 8 9,到每一个元素时都按此规律进行求和,知道循环到9为止,从而求出最大的和。

posted @ 2014-03-27 16:44  磨磨唧唧  阅读(111)  评论(0编辑  收藏  举报