子矩陣最大累加和

2021-09-09 08:32:50 字數 1496 閱讀 1993

問題描述如下

給定乙個矩陣matrix,其中的值有正、有負、有0,返回子矩陣的最大累加和。

藍橋備戰資料《演算法很美》chapter4——多維陣列和矩陣

先想到了一維陣列的求子陣列最大累加和的題目,時間複雜度為o(n),利用這種思維來處理這道題目。

第一列第二列

第三列最大累加和

第一行-1

-1-1

-1第一行+第二行-211

2第一行+第二行+第三行-300

0第二行-122

4

第二行+第三行-211

2第三行-1

-1-1

-1這樣一來就可以知道子矩陣的最大累加和為4。

需要用到雙重迴圈遍歷行的組合,將多行元素合成一行元素,

這樣就可以利用一維陣列求子陣列最大累加和的方法求解,因此時間複雜度為o(n3)。

#include

#include

using namespace std;

int*

*arr;

// 一維陣列最大子陣列累加和

intmaxsum

(int

*arr,

int n)

if(temps <0)

}return s;

}// 子矩陣最大累加和

intmaxsum

(int

**arr,

int n)

// i和j一起確定子矩陣的寬度

for(

int j = i; j < n; j++

)// 呼叫一維陣列的求最大累加和方法

temps =

maxsum

(tempsum, n);if

(temps > s)

} delete [

]tempsum;

}return s;

}int

main()

// 輸入資料

for(

int i =

0; i < n; i++)}

// 查詢子矩陣最大累加和

cout <<

maxsum

(arr, n)

<< endl;

// 釋放陣列資源

for(

int i =

0; i < n; i++)

delete [

]arr;

}return0;

}

【end】感謝閱讀

子矩陣的最大累加和

題目 給定乙個矩陣matrix,其中的值有正 有負 有零,返回子矩陣的最大累加和。例如矩陣matrix為 90 48 78 64 40 64 81 7 66 其中,最大累加和的子矩陣為 48 78 40 64 7 66 所以返回子矩陣的最大累加和為209。解析 最簡單也最容易想到的方法是求出矩陣中的...

子矩陣的最大累加和

一 題目要求 給定乙個矩陣matrix,其中的值有正有負,有0,返回子矩陣的最大累加和,例如,矩陣matrix為 90 48 78 64 40 64 81 07 66 其中,最大累加和的子矩陣為 48 78 40 64 7 66 所以返回累加和209 二 解題思路 將矩陣matrix n n 的每一...

最大連續子矩陣累加和

在此之前我們先做個鋪墊 題目大意 給定n個數,求這些數的某個連續子串行的累加和,保證這個連續子串行的累加和最大 舉個栗子 俗稱樣例 輸入 7 34 9 2 58 3輸出 14樣例解釋 最大的呢是 4 9 2 5 8 由此可見,無法將加上當前數的和與當前最大值進行對比來確定答案,雖然有負數,但之後可能...