時間限制: 1 sec 記憶體限制: 32 mb
提交: 168 解決: 65
[提交][狀態][討論版][命題人:外部匯入]
已知矩陣的大小定義為矩陣中所有元素的和。給定乙個矩陣,你的任務是找到最大的非空(大小至少是1 * 1)子矩陣。
比如,如下4 * 4的矩陣
0 -2 -7 0
9 2 -6 2
-4 1 -4 1
-1 8 0 -2
的最大子矩陣是
9 2-4 1
-1 8
這個子矩陣的大小是15。
輸入是乙個n * n的矩陣。輸入的第一行給出n (0 < n <= 100)。
再後面的若干行中,依次(首先從左到右給出第一行的n個整數,再從左到右給出第二行的n個整數……)給出矩陣中的n2個整數,整數之間由空白字元分隔(空格或者空行)。
已知矩陣中整數的範圍都在[-127, 127]。
測試資料可能有多組,對於每組測試資料,輸出最大子矩陣的大小。
127 3
-40 29 -16
38 18 22
24 -35 5
27本題為二維的最大連續子串行和,實際可以降至一維進行求解,對於確定的從第 i 列到 第 j 列,將同一行的數相加,最終得到乙個一維的數序列,對於這個數序列求最大連續子串行和就可以啦。78
dp[i]表示以a[i]作為末尾的連續序列的最大和狀態轉移方程:dp[i]=max
!注意看注釋
#include#includeusing namespace std;
int main() , ans = -1e9;
for (int i = 1; i <= n; i++)
} //列舉前k行,第i+1列至第j列(i,j]的和,得出最大值ans
for (int i = 0; i < n; i++)
}} cout << ans << endl;
} return 0;
}
Codeup動態規劃專題總結 放蘋果
時間限制 1 sec 記憶體限制 32 mb 提交 87 解決 70 提交 狀態 討論版 命題人 外部匯入 把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?用k表示 5,1,1和1,5,1 是同一種分法。第一行是測試資料的數目t 0 t 20 以下每行均包含二個整...
專題三 動態規劃總結
在這篇部落格裡我寫一下做了乙個月的dp之後對dp的粗淺認識,並附上一些學習資源。如果乙個問題的最優解包含其子問題的最優解,我們就稱此問題具有最優子結構。摘自 演算法導論 也就是說,具有最優子結構的問題的最優解一定是由其各個子問題的最優解組合而成的。我覺得dp最關鍵的就是找出狀態轉移方程,即找出問題的...
專題三 總結動態規劃
動態規劃總結 一 解釋 解決多階段策略問題的一種方法,運用最優性原理,排除重複計算,用空間換時間的演算法。二 適用的題目型別 1.問題具有多階段的決策 2.每個階段對應乙個狀態 狀態變數 3.每個階段有乙個決策 不同的決策導致下乙個階段不同的狀態 4.每個階段的最優解可以遞迴地歸結為下乙個階段各個可...