題目描述
有乙個包含正數和負數的二維陣列。乙個子矩陣是指在該二維陣列裡,任意相鄰的下標是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的時候,就替換為當前值,那麼最大值一定在這些字首和中。然後對於二維的情況,我們列舉可能的起始列標,這樣就是一維的最大子串行和的問題了。例如,當我們選定第一列和第三列後,把每一行第一列到第...