51nod 1158 全是1的最大子矩阵

题目链接:51nod 1158 全是1的最大子矩阵

题目分类是单调栈,我这里直接用与解最大子矩阵类似的办法水过了。。。

 #include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define CLR(a,b) memset((a),(b),sizeof((a)))
using namespace std;
const int N = ;
const int inf = 0x3f3f3f3f;
int n, m;
int dp[N][N];
int main(){
int i, j, k, ans, x, h;
scanf("%d%d", &m, &n);
CLR(dp, );
for(i = ; i <= n; ++i){
for(j = ; j <= m; ++j){
scanf("%d", &x);
if(x) dp[i][j] = x + dp[i-][j];
}
}
ans = ;
for(i = ; i <= m; ++i){
for(j = ; j <= n; ++j){
h = inf;
for(k = i; k <= m; ++k){
h = min(h, dp[j][k]);
if(h == ) break;
ans = max(ans, (k-i+) * h);
}
}
}
printf("%d\n", ans);
return ;
}
上一篇:史上最全JavaScript数组对象详解(二)


下一篇:Java并发大师Brain Goetz和Doug Lea 的中英文博客文章地址