在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。
示例:

输入:
1 0 1 0 0
1 0 1 1 1
1 1 1 1 1
1 0 0 1 0
输出: 4
动态规划问题。设二维数组dp[m][n],其中dp[i][j]表示以坐标(i,j)为右下角元素的最大正方形的边长。

当前位置的最大正方形边长为上,左,左上三个位置最大正方形边长的最小值+1。(必须这三个正方形同时满足&&该位置matrix[i][j]==1 的条件下,最大边长)

得到动态规划方程:
如果
matrix[i][j]==1matrix[i][j] == 1matrix[i][j]==1
那么

dp[i][j]=min(dp[i−1][j],dp[i][j−1],dp[i−1][j−1])+1dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) + 1dp[i][j]=min(dp[i−1][j],dp[i][j−1],dp[i−1][j−1])+1

否则

dp[i][j]=0dp[i][j] = 0dp[i][j]=0

并用一个变量maxLen记录下遍历过程中的最大正方形边长,最终返回maxLen*maxLen为最大正方形面积。

class Solution {public:int maximalSquare(vector<vector<char>>& matrix) {int m=matrix.size();if(m==0) return 0;               //排除空矩阵int n=matrix[0].size();int val1,val2,val3;vector<vector<int> > dp(m,vector<int>(n,0));int maxlen=0;for(int i=0;i<m;++i){dp[i][0]=matrix[i][0]-'0';if(dp[i][0]==1) maxlen=1;}for(int j=0;j<n;++j){dp[0][j]=matrix[0][j]-'0';if(dp[0][j]==1) maxlen=1;}for(int i=1;i<m;++i){for(int j=1;j<n;++j){if(matrix[i][j]=='0') continue;val1=dp[i-1][j-1];val2=dp[i-1][j];val3=dp[i][j-1];dp[i][j]=min(val1,min(val2,val3))+1;maxlen=max(maxlen,dp[i][j]);}}return maxlen*maxlen;}
};

找出矩阵中的最大正方形相关推荐

  1. python找出矩阵中的最大值_Python例题:找到并输出矩阵中的最大值

    早就听说Python是一门很强大的语言,不过一直没有什么机会去学.直到前一段时间我的技术群里有人问我了一道Python的题目,本着帮助他人.充实自己的想法,我二话不说就去查找资料,做出了这道题.也算是 ...

  2. 查找python矩阵中最大元素_找出矩阵中最大的元素

    当提示输入矩阵中的行数,然后提示输入这些行的元素时,我需要找到矩阵中最大的元素并返回其位置(行和列).在 例如,如果输入2行,如下所示: [1 3 7] [4 8 1] 最大元素的位置将是(1,1), ...

  3. 找出矩阵中绝对值最大的元素及其位置_线性代数之——矩阵范数和条件数

    1. 矩阵范数 我们怎么来衡量一个矩阵的大小呢?针对一个向量,它的长度是 .针对一个矩阵,它的范数是 .有时候我们会用向量的范数来替代长度这个说法,但对于矩阵我们只说范数.有很多方式来定义矩阵的范数, ...

  4. 找出矩阵中绝对值最大的元素及其位置_线性代数之——马尔科夫矩阵

    这一部分我们关注正的矩阵,矩阵中的每个元素都大于零.一个重要的事实:最大的特征值是正的实数,其对应的特征向量也如是.最大的特征值控制着矩阵 的乘方. 假设我们用 连续乘以一个正的向量 , 步后我们得到 ...

  5. python找出矩阵中的最大值_Python / Scipy:找到矩阵的“有界”最小值/最大值

    我认为指出我的问题最简单,一般情况很难解释. 说我有一个矩阵 a with dimensions NxMxT, 人们可以将T视为时间维度(使问题更容易).设(n,m)为通过NxM的指数.我可以调用(n ...

  6. python找出矩阵中的马鞍点_矩阵的马鞍点

    #include #define n 4 //马鞍点是第I行值最小第J列值最大 void maxmin(int a[n][n]) { int i,j ,flag; int max[n],min[n]; ...

  7. 数据结构第5章例题 若矩阵Am×n中存在某个元素aij满足:aij是第i行中的最小值且是第j列中的最大值,则称该元素为矩阵A的一个鞍点。试编写一个算法,找出A中的所有鞍点。

    [例5.1] 若矩阵Am×n中存在某个元素aij满足:aij是第i行中的最小值且是第j列中的最大值,则称该元素为矩阵A的一个鞍点.试编写一个算法,找出A中的所有鞍点. 算法如下: void saddl ...

  8. 如何找出R中加载的软件包版本?

    本文翻译自:How to find out which package version is loaded in R? I am in a process of figuring out how to ...

  9. 微策略2011校园招聘笔试题(找出数组中两个只出现一次的数字)

    1.8*8的棋盘上面放着64个不同价值的礼物,每个小的棋盘上面放置一个礼物(礼物的价值大于0),一个人初始位置在棋盘的左上角,每次他只能向下或向右移动一步,并拿走对应棋盘上的礼物,结束位置在棋盘的右下 ...

最新文章

  1. poj 2449 Remmarguts' Date 启发式搜索 A*算法
  2. C# 视频监控系列(9):服务器端——数据捕获(抓图 + 录像)
  3. 蚂蚁金服AAAI论文:基于长短期老师的样本蒸馏方法和自动车险定损系统的最新突破...
  4. python和c哪个适合入门-Python和C先学哪个好?
  5. 【Android 多媒体开发】 MediaPlayer 状态机 接口 方法 解析
  6. 人工智能时代的数据中心该怎么建?腾讯给出了自己的答案
  7. 服务器中显示存储设备,服务器节点信息集中显示方法、系统、设备及存储介质...
  8. 不填写内容用哪个斜杠代替_python3用单反斜杠代替双反斜杠
  9. [翻译]Real-Time Correlative Scan Matching
  10. PKUWC2018 5/6
  11. oracle四大索引类型,oracle 索引类型
  12. win10系统计算机物理地址,Win10电脑mac地址如何查看 win10系统查看mac地址的方法...
  13. oracle 图片批量导入,【SQL】Oracle BLOB 批量导入导出图片到文件夹相关语句
  14. 【5G核心网】free5GC UE安全鉴权流程源码分析
  15. three.js尝试(一)模拟演唱会效果
  16. redis数据结构分析-redisObject-SDS
  17. 阿里巴巴一件代发怎么下单
  18. AI编程 亚马逊 CodeWhisperer VS GitHub Copilot
  19. getValueFromEvent和shouldUpdate
  20. SpringCloud概括

热门文章

  1. 三星手机 SM-G9730 ROM包
  2. linux下.tar.gz和.gz文件解压详解
  3. 谷歌Android 9 Pie介绍及新功能
  4. 第十五章:国际化和本地化-gettext:消息编目-转换工作流概述
  5. 高中信息技术python及答案_高中信息技术《Python语言》模块试卷.doc
  6. STM32入门开发: 制作红外线遥控器(智能居家-万能遥控器)
  7. 软考中级(软件设计师)——面向对象程序设计(C++Java二选一的题15分-目标3分)
  8. 2017云栖大会门票转让_2017云栖大会门票多少钱?
  9. 如何轻松的破解excel 2016工作表密码
  10. Linux——vim/vi文本编辑器