1277. 统计全为 1 的正方形子矩阵(动态规划)

1277. 统计全为 1 的正方形子矩阵(动态规划)给你一个 m * n 的矩阵,矩阵中的元素不是 0 就是 1,请你统计并返回其中完全由 1 组成的 正方形 子矩阵的个数。示例 1:输入:matrix =[ [0,1,1,1], [1,1,1,1], [0,1,1,1]]输出:15解释: 边长为 1 的正方形有 10 个。边长为 2 的正方形有 4 个。边长为 3 的正方形有 1 个。正方形的总数 = 10 + 4 + 1 = 15.示例 2:输入:matrix = [ [1,0,1], [1,1,0],

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

给你一个 m * n 的矩阵,矩阵中的元素不是 0 就是 1,请你统计并返回其中完全由 1 组成的 正方形 子矩阵的个数。

示例 1:

输入:matrix =
[
  [0,1,1,1],
  [1,1,1,1],
  [0,1,1,1]
]
输出:15
解释: 
边长为 1 的正方形有 10 个。
边长为 2 的正方形有 4 个。
边长为 3 的正方形有 1 个。
正方形的总数 = 10 + 4 + 1 = 15.
示例 2:

输入:matrix = 
[
  [1,0,1],
  [1,1,0],
  [1,1,0]
]
输出:7
解释:
边长为 1 的正方形有 6 个。 
边长为 2 的正方形有 1 个。
正方形的总数 = 6 + 1 = 7.
 

提示:

1 <= arr.length <= 300
1 <= arr[0].length <= 300
0 <= arr[i][j] <= 1

题解
参考上一篇博客添加链接描述

这里只需要把每个以[i , j]为右下角的矩形统计出来有多少个就行了。

class Solution { 
   
public:
    int countSquares(vector<vector<int>>& matrix) { 
   
        int n = matrix.size(),m = matrix[0].size();
        int res = 0;
        vector<vector<int> >f(n + 1,vector(m + 1,0));
        for(int i = 1;i <= n;i ++){ 
   
            for(int j = 1;j <= m;j ++){ 
   
                if(matrix[i - 1][j - 1] == 1){ 
   
                    f[i][j] = min(f[i - 1][j],min(f[i][j - 1],f[i - 1][j - 1])) + 1;
                }
                else f[i][j] = 0;
                res += f[i][j];
            }
        }
        return res;
    }
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168637.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 易企秀的制作方法和步骤_易企秀制作流程

    易企秀的制作方法和步骤_易企秀制作流程虽然易企秀邀请函日渐被广大网友所知,也有很多网友在自己制作易企秀,但仍有很多想要制作易企秀,却自己不会制作的朋友,不得不花大价钱请他人制作,所以我们特地为您准备了一个如何快速学会制作易企秀的教程。打开

    2022年8月4日
    5
  • HTML网页设计:十一、表单

    HTML网页设计:十一、表单表单 1 表单 2 表单应用 3 表单的初级验证

    2025年10月30日
    3
  • MiFlash提示“错误代码”为“0xffffffff”[通俗易懂]

    MiFlash提示“错误代码”为“0xffffffff”[通俗易懂]当MiFlash提示“未指定的错误”时,我们可以根据其后的错误代码来寻求问题的解决方法。当MiFlash提示“错误代码”为“0xffffff01”时,表明“MiFlash找不到指定的文件”。对此我们可以通过以下方法来解决:右击“计算机”图标,从弹出的右键菜单中选择“属性”项。从打开的“系统属性”窗口中,点击左上角的“高级系统设置”按钮进入详细设置界面。待打开“系统属性”窗口后,切换到“高级”选项卡,点击“环境变量”按钮打开其设置对话框。从打开的“环境变量”窗口中,从“系统变量”列表中找到“Path

    2022年5月16日
    100
  • .htaccess文件RewriteRule语法规则

    .htaccess文件RewriteRule语法规则.htaccess文件是运行ApacheWebServer的Web服务器的配置文件,对配置和重定向ApacheWebServer文件系统很有用。请记住.htaccess文件将采用隐藏格式。没有人可以通过URL直接看到它。.htaccess文件有很多用途。在这里,我将讨论.htaccess文件RewriteRule语法规则。RewriteRule语法规则#——位于行首时表示注释。[F]——Forbidden(禁止):命令服务器返回403Forb…

    2022年5月15日
    28
  • HDU5432-Pyramid Split[通俗易懂]

    HDU5432-Pyramid Split[通俗易懂]最近以各种借口偷懒了,上次BC的题一直也没补,今天才补完第一题,非常好过,可当时就是想不通~#include#include#include#defineeps1e-5doublea[10005],b[10005];intn;intbSearch(doublebegin,doubleend,doublee){doublemid,left=begi

    2022年6月19日
    27
  • .net 开源框架「建议收藏」

    .net 开源框架「建议收藏」开源框架:CastleCastle是由HamiltonVerissimo撰写的,从2003年就开始开发,并在2006年11月发布了1.0RC2。2007年09发布了1.0RC3版本。Castle是个轻量级(Lightweight)容器(Container)、实现IoC(InversionofControl)概念,是一个全方位的应用程序(Application)框

    2022年7月15日
    17

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号