時間限制: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的每行都看成乙個直方圖,本題就了求直方圖內最大長方形的問題,於是我們轉為考慮求直方圖中最大長方形的面積。這裡最容易想到的仍然是窮舉法,我們可以列出直方圖的所有端點,求出各個範圍內的最大長方形的...