课堂练习 · 求二维整数数组的子数组之和的最大值之二

小组讨论成员:王鑫楠,安娜

如题,子数组不一定为矩形块,例如:

                                                                      

该数组最大子数组如黄色块部分所示。

我们的算法思路:

      1)先遍历二维数组,找出所有正整数及0组成的所有子数组块,如图2所示:

                             

2)寻找子数组块之间权最小的路径,使得两个子数组块相加大于两个中的每个数组块,

          从绝对值最小的负数开始找起:

                            

      【注意:任意两个整数块之间权最小的路径不一定是整个最大子数组块中某两个子数组块连接路径,路径的选择必须从整体考虑。如图3所示,红色与蓝色子数组块之间连接,(0,3)即-3应是它们的最小路径,但从整体考虑,为连接粉色数据块,显然(0,3)就不是最优选择。】

          所求即数组的最大子数组。

 

posted @ 2014-03-27 17:59  安娜123  阅读(153)  评论(0编辑  收藏  举报