最大子陣和(動態規劃)

2021-09-25 16:40:27 字數 973 閱讀 2644

題目描述

有乙個包含正數和負數的二維陣列。乙個子矩陣是指在該二維陣列裡,任意相鄰的下標是1*1或更大的子陣列。乙個子矩陣的和是指該子矩陣中所有元素的和。本題中,把具有最大和的子矩陣稱為最大子矩陣。

例如:

0 -2 -7 0

9 2 -6 2

-4 1 -4 1

-1 8 0 -2

這個陣列的最大子矩陣為:

9 2-4 1

-1 8

其和為15。

輸入

輸入包含多組測試資料。每組輸入的第一行是乙個正整數n(1<=n<=100),表示二維方陣的大小。接下來n行每行輸入n個整數,表示陣列元素,範圍為[-127,127]。

輸出

輸出最大子陣和。

樣例輸入

4

0 -2 -7 0

9 2 -6 2

-4 1 -4 1

-1 8 0 -2

樣例輸出

15
解析:

如果是一維陣列找最大子陣,那麼就是找一段總和最大的上公升子串行。

因此可以將二維陣列壓縮成一維陣列,即將 i 行相加。

**實現:

#include #include #include using namespace std;

int maxs(int *w,int n)

for(i=1; ifor(j=0; jb[i][j]+=b[i-1][j];

int maxn=-999;

for(i=0; i}

cout<}

return 0;

}

最大子段和與最大子陣和 動態規劃解法

在乙個陣列中找出和最大的連續幾個數。至少包含乙個數 例如 陣列a 2,1,3,4,1,2,1,5,4 則連續的子串行 4,1,2,1 有最大的和6.輸入格式 第一行輸入乙個不超過1000的整數n。第二行輸入n個整數a i 輸出格式 第一行輸出乙個整數,表示最大的和。include includeus...

藍橋杯 最大子陣 動態規劃

題目大意 給定乙個矩陣,求出它的子矩陣中元素之和的最大值 題目分析 這道題明顯是用 動態規劃來做。我們可以先分析一維陣列的情況,num 考慮類似這樣的陣列,要求出它的最長連續子串行和的最大值。我們從左往右掃瞄,用dp i 表示以第i個元素為末尾元素的連續子串行和的最大值。也就是第i個元素一定要包括在...

最大子陣和

解題思路 首先,考慮一維的情況。a1,a2,a3,an的最大子串行和。我們維護乙個 最大字首和 當這個字首和小於0的時候,就替換為當前值,那麼最大值一定在這些字首和中。然後對於二維的情況,我們列舉可能的起始列標,這樣就是一維的最大子串行和的問題了。例如,當我們選定第一列和第三列後,把每一行第一列到第...