动态规划-最大的正方形面积

2023-05-16

题目表述

Given a 2D binary matrix filled with 0’s and 1’s, find the largest square containing only 1’s and return its area.

For example, given the following matrix:

1 0 1 0 0
1 0 1 1 1
1 1 1 1 1
1 0 0 1 0

Return 4.

思路

使用动态规划来求解,算法时间复杂度O(n^2)。

dp[i][j] : 以(i, j)为右下角的面积最大的正方形的边长。

初始条件:最上面一行,最左边一列,可以直接得到dp值。

更新公式:matrix[i][j] == ‘0’ - > dp[i][j] = 0

matrix[i][j] == ‘1’ - > dp[i][j] = min(dp[i - 1][j], dp[i - 1][j - 1], dp[i][j - 1]) + 1

代码

#include<iostream>
#include<vector>
const int _MAX = 10;

using namespace std;

char matrix[_MAX][_MAX];
int dp[_MAX][_MAX];

int min3(int a, int b, int c){
    a = a < b ? a : b;
    return a < c ? a : c;
}

int main(){
    int n, m;
    cin>>n>>m;
    for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++){
            cin>>matrix[i][j];
        }
    }

    
    int res = 0;
    for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++){
            if(matrix[i][j] == 1)dp[i][j] = 1;
            else dp[i][j] = 0;
        }
    }

    for(int i = 1; i < n; i++){
        for(int j = 1; j < m; j++){
            if(matrix[i][j] == '1'){
                dp[i][j] = min3(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]) + 1;
                res = res > dp[i][j] ? res : dp[i][j];
            }
        }
    }
    cout<<res * res<<endl;
    return 0;
}

/* 
4 5
1 0 1 0 0 
1 0 1 1 1 
1 1 1 1 1 
1 0 0 1 0 
 */

更多内容访问 omegaxyz.com
网站所有代码采用Apache 2.0授权
网站文章采用知识共享许可协议BY-NC-SA4.0授权
© 2020 • OmegaXYZ-版权所有 转载请注明出处

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动态规划-最大的正方形面积 的相关文章

  • Centos7下搭建MySQL高可用架构(互为主从)

    1 环境介绍 192 168 31 14 A机器 192 168 31 82 B机器 192 168 31 200 vip xff08 A主B从 xff09 2 安装mysql 2 1 创建配置文件 xff1a vi mysql cnf m
  • JAVA基础篇-文件分片与合成实践

    本文提供两种文件分片与合成的方法 xff0c 分别是普通IO流的方式和使用RandomAccessFile的方式 xff0c 推荐RandomAccessFile方式 xff0c 接下来请看代码实现 xff1a package com st
  • GitBook快速入门

    1 安装 Node js Node 官网已经把 linux 下载版本更改为已编译好的版本了 xff0c 我们可以直接下载解压后使用 xff1a wget https nodejs org dist v10 15 3 node v10 15
  • 基于jsonp和cookie实现单点登录

    1 SSO需求 当前域名A xff1a www abc com 跨域域名B xff1a www def com 当在A域名下登录后点击链接跳转至域名B xff0c 希望实现域名B免登录 2 实现思路 2 1域名A开发一个接口C xff1a
  • 基于docker安装破解jira7.11.1

    1 拉取jira的docker镜像 docker pull cptactionhank atlassian jira software 7 11 1 2 启动jira容器 docker run name jira detach restar
  • Shell命令学习

    Shell命令 文章目录 Shell命令一 Shell是什么 xff1f 二 linux环境下的快捷键tab xff1a 输入命令或者路径等操作时自动补全上键 xff1a 快速选择上一次或多次执行的命令下键 xff1a 快速选择下一次或多次
  • 关于onNewIntent理解

    首先介绍一下Android的四种启动模式 standard 默认的 xff1a 所有的activity实例放在一个task xff08 任务栈 xff09 中 xff0c 遵循先进后出 xff0c 后进先出的规则 singleTop xff
  • ubuntu20.04系统安装谷歌浏览器

    1 百度搜索 谷歌浏览器官网 xff0c 然后在搜索界面点击如图所示图标进入谷歌浏览器下载界面 2 在谷歌浏览器下载界面 xff0c 点击 下载Chrome 3 在弹出的下载界面选择Ubuntu适用的64位下载包后点击 接受并安装 4 在下
  • 【Algorithm】单向链表模拟实现vector功能

    span class token function cmake minimum required span span class token punctuation span VERSION span class token number
  • ARCH INSTALL

    Arch Linux Install With UEFI Boot gdisk dev sdxy boot always uses less than 1G uses EF00 EFI System home uses 8302 mnt u
  • SQL Server 表注释&列注释

    添加表注释 表加注释 EXEC sys sp addextendedproperty 64 name 61 N 39 MS Description 39 64 value 61 N 39 注释内容 39 64 level0type 61 N
  • 在ubuntu14.04上安装或升级git

    git version git version 1 9 1 可以使用下面命令升级git xff08 如果不是root用户 xff0c 需在命令前加sudo xff09 xff1a add apt repository ppa git cor
  • C#串口数据处理--环形缓冲区-FIFO

    一 FIFO环形缓冲区初始化 static int MAX BUFFER LEN 61 1024 定义缓冲区大小 FIFO receiveBufferManager 61 new FIFO MAX BUFFER LEN 二 串口接收事件中添
  • IDEA 解决jar冲突问题

    在实际的 Maven 项目开发中 xff0c 由于项目引入的依赖过多 xff0c 遇到 jar 冲突算是一个很常见的问题了 如何使用 IntelliJ IDEA 解决 jar 包冲突的问题 xff01 简单粗暴 xff0c 直接上示例 xf
  • Ubuntu 18.04下安装Google Chrome

    Ubuntu 18 04下安装Google Chrome 进入Chrome官网下载地址 xff1a https www google cn intl zh CN chrome 点击 下载Chrome xff0c 进入下载页面 xff1a 如
  • css获取网页内所有标签的内容

    选择所有标签内的内容 包括script和style xff1a span class token punctuation span span class token punctuation span text 选择除script和style
  • Ubuntu 22.04 dektop 开启root并自动登录桌面

    1 设置root密码 span class token function sudo span span class token function passwd span root 2 解锁root span class token func
  • linux服务器之间的数据拷贝

    方法一 xff1a scp xff08 secure copy xff09 安全拷贝 xff08 1 xff09 scp定义 xff1a scp可以实现服务器与服务器之间的数据拷贝 xff08 from server1 to server2
  • Ubuntu桌面美化方法记录

    Ubuntu 20 04 1 LTS 桌面系统主题 xff0c 图标美化记录 Ubuntu使用的是Gnome Desktop xff0c 可以在 Gnome Look 寻找需要的主题 xff0c 图标 xff0c 插件等来丰富桌面系统 本文
  • spring mvc配置类简介及放静态资源释放

    配置文件ApplicationContext xml 基于spring的项目资源都是通过DispatcherServlet作为拦截器 xff0c DispatcherServlet是前置控制器 xff0c 配置在web xml文件中的 拦截

随机推荐