zoukankan      html  css  js  c++  java
  • Maximal Rectangle

    Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing all ones and return its area.

    题意:在一个只有0、1的矩阵中找到一个面积最大的矩形,它内部所有的元素都是1。

    算法:一开始,理解错了题意,后来在网上看了一下,终于弄明白了,用到了动态规划的思想,首先遍历矩阵,用一个二维数组A[i][j]表示第i行,以第j个元素为结尾的连续1的个数,遍历一次矩阵就可以得到,然后计算一matrix[i][j]为右下角的全1矩阵的最大值,也是遍历,不过遍历的是A数组,找到以第i行第j列为右下角的最大全1矩阵的面积,只要i向上遍历就可以了,找最小宽,然后算面积,如果面积比当前保存的面积大,就更新面积。写得不太清楚,有点乱,不过理解了就简单了。代码如下:

     1 class Solution {
     2 public:
     3     int maximalRectangle(vector<vector<char> > &matrix) {
     4          if(matrix.size()==0||matrix[0].size()==0)  return 0;
     5          int m[matrix.size()+1][matrix[0].size()+1];
     6          int len1=matrix.size();
     7          int len2=matrix[0].size();
     8          for(int i=0;i<=len1;i++)  m[i][0]=0;
     9          for(int i=1;i<=len1;i++)
    10          {
    11              for(int j=1;j<=len2;j++)
    12              {
    13                  if(matrix[i-1][j-1]=='1')
    14                  {
    15                      m[i][j]=m[i][j-1]+1;
    16                  }
    17                  else m[i][j]=0;
    18              }
    19          }
    20          
    21         int ret=0;
    22                  
    23         for(int i=1;i<=matrix.size();i++)
    24         {
    25             for(int j=1;j<=matrix[0].size();j++)
    26             {
    27                 int width=m[i][j];
    28                 int k=i;
    29                 while(k>0)
    30                 {
    31                     if(m[k][j]==0)  break;
    32                     width=min(width,m[k][j]);
    33                     ret=max(ret,width*(i-k+1));
    34                     k--;
    35                 }
    36             }
    37         }
    38         return ret;
    39     }
    40 };
  • 相关阅读:
    LINUX挂接移动硬盘
    LINUX挂接光盘镜像文件
    Parted:2T以上磁盘分区工具(LINUX挂载2T以上磁盘)
    LINUX文件系统操作命令
    linux 文件类型的颜色
    LINUX常用操作命令和命令行编辑快捷键
    telnet- Linux必学的60个命令
    Netstat- Linux必学的60个命令
    linux服务之maven
    PHP 设计模式 笔记与总结(4)PHP 链式操作的实现
  • 原文地址:https://www.cnblogs.com/sqxw/p/4039699.html
Copyright © 2011-2022 走看看