SCAU OJ題 8601 最大長方體問題

2021-10-04 05:41:56 字數 1297 閱讀 8514

時間限制:1000ms 記憶體限制:1000k 提交次數:0 通過次數:0

語言: not limited

描述乙個長,寬,高分別是m,n,p的長方體被分割成mnp個小立方體。每個小立方體內含乙個整數。試著設計乙個演算法,計算所給長方體的最大子長方體。子長方體的大小由它內部所含所有整數之和確定。 約定:當該長方體所有元素均為負數時,輸出最大子長方體為0。

輸入格式

第一行3個正整數m,n,p,其中 1<=m,n,p<=50 接下來的m*n行中每行p個整數,表示小立方體中的數。

輸出格式

第一行中的數是計算出的最大子長方體的大小。

輸入樣例

3 3 3 0 -1 2 1 2 2 1 1 -2 -2 -1 -1 -3 3 -2 -2 -3 1 -2 3 3 0 1 3 2 1 -3

輸出樣例

1421

思路:先寫出一維的最大子段和演算法,基於一維演算法寫出最大子矩陣和的演算法,再基於二維的演算法寫出三維的最大長方體和的演算法,老俄羅斯套娃了。

#include

using

namespace std;

intmaxsum

(int n,

int*a)

return sum;

}int

maxsum2

(int m,

int n,

int*

*a)}

return sum;

}int

maxsum3

(int m,

int n,

int p,

int*

**a)

for(

int i =

1; i <=m ; i++)}

for(

int l = i; l <=m ; l++)}

int max=

maxsum2

(n,p,c);if

(max>sum)

sum=max;}}

return sum;

}int

main()

//二維

for(

int i =

1; i <=m ; i++)}

//三維

for(

int i =

1; i <=m ; i++)}

} cout<<

maxsum3

(m,n,p,a)

;}

SCAU OJ題 10304 平面域著色

10304 平面域著色 時間限制 1000ms 記憶體限制 1000k 提交次數 188 通過次數 53 題型 程式設計題 語言 g gcc vc description 平面上有一點p,它是n個域d1 d2 dn的共同交點,現取k種顏色對這n個域進行著色,要求相鄰兩個域著的顏色不同,求著色方案數。...

最大長方體問題

描述 乙個長,寬,高分別是m,n,p的長方體被分割成m n p個小立方體。每個小立方體內含乙個整數。試著設計乙個演算法,計算所給長方體的最大子長方體。子長方體的大小由它內部所含所有整數之和確定。約定 當該長方體所有元素均為負數時,輸出最大子長方體為0。輸入格式 第一行3個正整數m,n,p,其中 1 ...

C 最大長方形

首先如圖所示,在表t中記錄各元素向上存在多少個連續的乾淨瓷磚。對各列使用動態規劃法可以很輕鬆地求出t。把錶t的每行都看成乙個直方圖,本題就了求直方圖內最大長方形的問題,於是我們轉為考慮求直方圖中最大長方形的面積。這裡最容易想到的仍然是窮舉法,我們可以列出直方圖的所有端點,求出各個範圍內的最大長方形的...