全是1的最大子矩阵
来源:互联网 发布:批处理软件 编辑:程序博客网 时间:2024/06/10 08:59
给出1个M*N的矩阵M1,里面的元素只有0或1,找出M1的一个子矩阵M2,M2中的元素只有1,并且M2的面积是最大的。输出M2的面积。
Input
第1行:2个数m,n中间用空格分隔(2 <= m,n <= 500)第2 - N + 1行:每行m个数,中间用空格分隔,均为0或1。
Output
输出最大全是1的子矩阵的面积。
Input示例
3 31 1 01 1 10 1 1
Output示例
4
#include <iostream>#include <stack>using namespace std;const int MAXN = 550;int matrix[MAXN][MAXN];int len[MAXN][MAXN];int m, n;int main(){ cin >> m >> n; for (int i = 1; i <= m; i++) { for (int j = 1; j <= n; j++) { cin >> matrix[i][j]; if (matrix[i][j] == 1) { len[i][j] = len[i][j-1] + 1; } } } int result = 0; for (int j = 1; j <= n; j++) { stack<int> buf; len[m+1][j] = -1; for (int i = 1; i <= m+1; i++) { int temp = 0; int top = i; while (!buf.empty() && len[i][j] < len[buf.top()][j]) { top = buf.top(); temp = len[top][j] * (i - top); buf.pop(); result = max(result, temp); } if (buf.empty() || len[i][j] > len[buf.top()][j]) { buf.push(top); len[top][j] = len[i][j]; } } } cout << result << endl; return 0;}
阅读全文
0 0
- 全是1的最大子矩阵
- 51nod 1158:全是1的最大子矩阵
- 51nod 1158 全是1的最大子矩阵
- 51Nod-1158-全是1的最大子矩阵
- 51NOD 1158 全是1的最大子矩阵
- 51nod 1158 全是1的最大子矩阵
- 51Nod 1158 全是1的最大子矩阵
- 51nod 1158 全是1的最大子矩阵
- 51Nod-1157-全是1的最大子矩阵
- 面积最大的全1子矩阵
- 面积最大的全1子矩阵
- 面积最大的全1子矩阵
- 最大子矩阵全1的个数
- 最大全1子矩阵
- 最大全1子矩阵
- 最大全1子矩阵
- 最大全1子矩阵
- 最大全1子矩阵
- iOS UIFont原生字体和第三方字体.ttf的使用
- JavaScript类型浅谈
- MYSQL之表连接
- C++编程中const和#define的区别
- Redis 学习笔记
- 全是1的最大子矩阵
- 激活函数总结(一)
- Linux网络性能评估工具iperf
- 代码3 爬取贴吧多页数据
- redis的使用
- Android 设计模式
- Java初级入门
- NS2整体实现机制(转)
- 解决滑动条控件,子物体减少,滑动条不刷新的bug