二维数组,求最大的子数组(刘若凡 刘梦辉)

1.定义数组a[m][n],先选择第一个数a[0][0]作为待求数,然后依次求出 a[0][0]+a[1][0]+...+a[m-1][0],可以从得出的m个所求数中比较得出最大数max(01);
2.以a[0][0]+a[0][1]这前两个数的和作为第一个待求数,然后依次求出(a[0][0]+a[0][1])+(a[1][0]+a[1][1])+...+(a[m-1][0]+a[m-1][1]),可以从得出的m个所求数中比较得出最大数max(02);
3.依次以第一行的3,4,5....n个数作为第一个待求数,再依次求出以这些数为基础项的各行的数的和,再从每次得出的m所求数中依次得到max(03),max(04),......max(0n);
4.经过上述计算后可以将涉及到数组a[m][n]的一列的所有矩阵和都求出来,其各种值即为上述的所有max的值,然后忽略掉数组的第一列,以a[1][1]作为第一个待求数,然后遵循1可以求出m个数中的最大数max(11),然后以a[1][1]+a[1][2]为所求数,遵循2可以求出max(12),然后遵循3,可以求出max(13),max(14),...max(1n),此次求出的各种最大值即为数组忽略第一列但包含第二列的的所有最大值;
5.然后重复4的步骤,最后可以得到最大值max(21),max(22),...max(2n),max(31),max(32),...max(3n)...max((m-1)1),max((m-1)2),...max((m-1)n);
6.比较着m*n个最大值,所得到的值即为数组a[m][n]中的最大的矩阵和。

posted @ 2014-03-27 13:50  平凡的凡  阅读(158)  评论(0编辑  收藏  举报