- E - Largest Submatrix of All 1’s
- POJ - 3494
- 题目大意:找一个全部是1的最大子矩阵
- 解题思路:https://blog.csdn.net/zuzhiang/article/details/78136417
-
#include<stack> #include<stdio.h> using namespace std; #define maxn 2345 struct node { int id,data; } cur; int mmp[maxn][maxn]; int n,m,ans; int main() { while(~scanf("%d%d",&n,&m)) { ans=0; for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) { scanf("%d",&mmp[i][j]); if(mmp[i][j]!=0) mmp[i][j]=mmp[i-1][j]+1; } stack<node>stk; for(int i=1; i<=n; i++) { for(int j=1; j<=m; j++) { cur.id=j; cur.data=mmp[i][j]; if(stk.empty()) stk.push(cur); while(!stk.empty()&&stk.top().data>cur.data) { ans=max(ans,(j-stk.top().id)*stk.top().data); cur.id=stk.top().id; stk.pop(); } stk.push(cur); } while(!stk.empty()) { ans=max(ans,(m+1-stk.top().id)*stk.top().data); cur.id=stk.top().id; stk.pop(); } } printf("%d\n",ans); } return 0; }
E - Largest Submatrix of All 1’s POJ - 3494 -单调栈-第三弹
最新推荐文章于 2020-08-12 20:41:24 发布