題意就是求最大子矩陣。
白書上的例題。
如果暴力枚舉 左上角,然後長和寬。時間復雜度為O(m^3*n^3)。
可以定義up[][] 為某個格子最大高度,
定義 left[][]為某個格子左掃描最大。
定義 right[][]為右掃描的最大。
最後乘起來。
#include #include #include #include #include #include #include //#include #include #include #include #define INF 0x7fffffff #define eps 1e-8 #define LL long long #define PI 3.141592654 #define CLR(a,b) memset(a,b,of(a)) #define FOR(i,a,b) for(int i=a;i=0;j--) { if(g[i][j]) right[i][j]=m,ro=j; else { if(i==0) right[i][j]=ro-1; else right[i][j]=min(right[i-1][j],ro-1); ans=max(ans,up[i][j]*(right[i][j]-left[i][j]+1)); } } } printf("%d\n",ans*3); } }
linux 下cmake 編譯 ,調用,調試 poco 1.
POJ 3087 Shuffle'm Up
六年前,我剛熱戀“面向對象”(Object-Or
[cpp] #include<ma
poj3239 Solution to the n Quee
leetcode筆記:Range Sum Query 2D