近日看到一道面试题:
求一个矩阵中最大的二维子矩阵(元素和最大),如:
1 2 0 3 4
2 3 4 5 1
1 1 5 3 0
中最大的是:
4 5
5 3
要求:(1)写出算法;(2):分析时间复杂度
初步思路:(1)设定一个最大二维子矩阵;(2)遍历原矩阵,相邻的两元素和相加,若大于子矩阵则进行替换。
代码:
function test1($arr) {
$juzhen_max = [[0,0],[0,0]]; // 最大矩阵数组
foreach ($arr as $k1 => $v1) {
$value_0 = array_sum($juzhen_max[0]);
$value_1 = array_sum($juzhen_max[1]);
if($value_0 <= $value_1){
// 要替换的最大矩阵索引
$juzhen_index = 0;
}else{
$juzhen_index = 1;
}
foreach ($v1 as $k2 => $v2) {
if( $k2 >= count($v1)-2 ) {
break;
}
if( $v2+$arr[$k1][$k2+1] > $value_0 || $v2+$arr[$k1][$k2