249 h221 最大岛屿面积

news2025/1/11 22:55:16

方式1 错误的动态规划

递归公式为
if (matrix[i][j]‘1’&&matrix[i-1][j-1]‘1’){
int edge=(int) Math.pow(dp[i][j],0.5); // 边长
int addCount = addCount(matrix, i, j, edge);
dp[i][j]=dp[i-1][j-1]+addCount;
max=Math.max(max,dp[i][j]);
}
只根据 dp[i-1][j-1] 与上方,左方的元素来计算最大面积,无法统计 [0,1][1,0] 当前为0,而且左上角也为0

public int maximalSquare(char[][] matrix) {
        //     //1. 定义数组 dp[i][j] grid[i][j] 结尾的陆地上的最大面积
        int[][] dp=new int[matrix.length][matrix[0].length];
        //2.递归公式
        //3.初始化 只要第一行或第一列有一个为1,后面的都为1
        for (int i = 0; i <matrix.length ; i++) {
                if (matrix[i][0]=='1'){
                    dp[i][0] = 1;
                    while (i<matrix.length){
                        dp[i][0] = 1;
                    }
                    break;
                }
        }
        for (int i = 0; i <matrix[0].length ; i++) {
            if (matrix[0][i]=='1'){
                dp[0][i] = 1;
                while (i<matrix.length){
                    dp[0][i] = 1;
                }
                break;
            }
        }
        int max=1;
        // 4. 递归顺序
        for (int i = 1; i < matrix.length; i++) {
            for (int j = 1; j < matrix[0].length; j++) {
                if (matrix[i][j]=='1'&&matrix[i-1][j-1]=='1'){
                    int edge=(int) Math.pow(dp[i][j],0.5); // 边长
                    int addCount = addCount(matrix, i, j, edge);
                    dp[i][j]=dp[i-1][j-1]+addCount;
                    max=Math.max(max,dp[i][j]);
                }else{
                    // 该算法存在缺点  无法统计 [0,1][1,0]  当前为0,而且左上角也为0
                }
            }
        }
        return max;
    }
    public int addCount(char[][] matrix,int i,int j,int edge){
        for (int k = 1; k <=edge ; k++) {
            if (matrix[i-k][j]=='0'||matrix[i][j-k]=='0'){
                return 0;
            }
        }
        return 2*edge+1;
    }   

方式二 动态规划

递归公式:
dp[i][j] = Math.min(dp[i - 1][j - 1], Math.min(dp[i - 1][j], dp[i][j - 1])) + 1;
证明:
在这里插入图片描述

dp[i][j]的含义: 包含matrix[i][j]的最大正方形边长.

  public int maximalSquare(char[][] matrix) {
        //     //1. 定义数组 dp[i][j] grid[i][j] 结尾的陆地上的最大边长
        int[][] dp=new int[matrix.length][matrix[0].length];
        int max=0;
        // 4. 递归顺序
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[0].length; j++) {
                if (matrix[i][j] == '1') {
                    if (i==0||j==0){
                        dp[i][j]=1; 
                    }else {
                        dp[i][j] = Math.min(dp[i - 1][j - 1], Math.min(dp[i - 1][j], dp[i][j - 1])) + 1;
                    }
                    max = Math.max(max, dp[i][j]);
                }
            }
        }
        return max*max;
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/24905.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Dev C++开发环境的配置及使用

标题Dev C开发环境的配置及使用 本文引用自作者编写的下述图书; 本文允许以个人学习、教学等目的引用、讲授或转载&#xff0c;但需要注明原作者"海洋饼干叔 叔"&#xff1b;本文不允许以纸质及电子出版为目的进行抄摘或改编。 1.《Python编程基础及应用》&#xff0…

免费题库接口

免费题库接口 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查题校园题库&#xff1a;查题校园题库后台&#xff08;点击跳转&a…

[SUCTF 2019]Pythonginx

源码&#xff1a; app.route(/getUrl, methods[GET, POST]) def getUrl():url request.args.get("url")host parse.urlparse(url).hostnameif host suctf.cc:return "我扌 your problem? 111"parts list(urlsplit(url))host parts[1]if host suctf…

[论文评析]Densely Connected Convolutional Networks,CVPR,2017

Densely Connected Convolutional Networks&#xff0c; 文章信息背景与动机DenseNetDense blockDenseNetDenseNet的集中经典配置总结文章信息 题目&#xff1a;Densely Connected Convolutional Networks&#xff0c; 发表&#xff1a;CVPR,2017 作者&#xff1a;Gao Huang, …

【TWVRP】遗传算法求解带时间窗的含充电站车辆路径规划问题【含Matlab源码 1177期】

⛄一、VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem&#xff0c;VRP)是运筹学里重要的研究问题之一。VRP关注有一个供货商与K个销售点的路径规划的情况&#xff0c;可以简述为&#xff1a;对一系列发货点和收货点&#xff0c;组织调用一定的车辆&#xff…

【密码学篇】虚拟专用网技术原理与应用(商密)

【密码学篇】虚拟专用网技术原理与应用&#xff08;商密&#xff09; VPN技术不是洪水猛兽&#xff0c;其普遍应用于网络通信安全和网络接入控制&#xff0c;可通过服务器、硬件、软件等多种方式实现。—【蘇小沐】 文章目录【密码学篇】虚拟专用网技术原理与应用&#xff08;…

JAVA多线程并发(一):线程的创建

JAVA多线程并发——创建线程 第一章&#xff1a;线程的创建与实现 文章目录JAVA多线程并发——创建线程一、继承Thread类二、实现runnable接口三、简单匿名内部类写法四、实现Callable接口五、线程池一、继承Thread类 代码示例&#xff1a; public class ExtendThread {publ…

SPARKSQL3.0-Unresolved[Parsed]阶段源码剖析

一、前言 上两节介绍了Antlr4的简单使用以及spark中如何构建SessionState&#xff0c;如果没有看过建议先了解上两节的使用&#xff0c;否则看本节会比较吃力 [SPARKSQL3.0-Antlr4由浅入深&SparkSQL语法解析] [SPARKSQL3.0-SessionState构建源码剖析] 那么在Unresolved…

MySql查询的生命周期和性能优化思路

目录 前言 1. 为什么查询性能差 2. 一次查询的生命周期 2.1 客户端与服务端通信 2.2 查询缓存 2.3 解析器 2.4 预处理器 2.5 优化器 2.6 查询引擎 2.7 存储引擎 3. 查询性能优化的思路 4.总结 前言 一说到mysql的查询性能优化&#xff0c;相信很多人能说出来很多的技…

AT32F407/437使用FreeRTOS并实现ping客户端

示例目的 基于以太网络&#xff0c;实现ping客户端已检测网络联机。 支持型号 AT32F407xx AT32F437xx 主要使用外设 EMAC GPIO USART 快速使用方法硬件资源 1) 指示灯LED2/LED3 2) USART1(PA9/PA10) 3) AT-START-F407/ AT-START-F437实验板 4) 以太网连接线软件资源 1) SourceC…

sql函数coalesce和parse_url

学习函数系列&#xff1a; coalesce coalesce函数可以用来排除null值。 coalesce(a, b,c,d) 参数的个数没有限制 返回第一个参数中非null的值。 select help coalesce\G; [ 1. row ] name | COALESCE description | Syntax: COALESCE(value,…) Returns the first non-NUL…

15-JavaSE基础巩固练习:多态、接口、抽象类的综合练习

多态的综合练习 1、需求 狗类 属性&#xff1a;年龄&#xff0c;颜色行为&#xff1a; eat(String something)&#xff1a;表示吃东西lookHome()&#xff1a;看家 猫类 属性&#xff1a;年龄&#xff0c;颜色行为&#xff1a; eat(String something)&#xff1a;吃东西catch…

5G工业互联阶段二:5G产线工控网

5G深入核心生产环节的第二个阶段&#xff0c;主要是实现产线内部通信5G化。以工控5G化为主&#xff0c;并综合考虑数采、安全通信等。大致示意如下&#xff1a; 工艺部件工控通信5G化&#xff1a; 如上图所述&#xff0c;以产线主PLC为中心&#xff0c;大致分为主PLC到产线内机…

Spark 3.0 - 5.ML Pipeline 实战之电影影评情感分析

目录 一.引言 二.Stage1 - 数据准备 1.数据样式 2.读取数据 3.平均得分与 Top 5 4.训练集、测试集划分 三.Stage-2 - Comment 分词 1.Tokenizer &#x1f645;&#x1f3fb;‍♀️ 2.JieBa 分词 &#x1f646;&#x1f3fb;‍♀️ 2.1 Jieba 分词示例 2.2 自定义 Jie…

系统设计 system design 干货笔记

参考大佬的博客 https://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache 参考的github https://github.com/donnemartin/system-design-primer#step-2-review-the-scalability-article scalability 1 Clone 每台服务器都包含完全相同的代码库&#…

SOLIDWORKS 2023 3D Creator 云端结构设计新功能

3DEXPERIENCE平台更新版本已经与大家见面&#xff0c;今天微辰三维与大家分享3D Creator 云端结构设计新功能&#xff0c;让我们先一起来看看视频—— SOLIDWORKS 2023 3D 云端结构设计新功能点击观看3D Creator 云端结构设计新功能 如今&#xff0c;我们的设计生产工作不仅要面…

Linux进阶-Makefile

make工具&#xff1a;找出修改过的文件&#xff0c;根据依赖关系&#xff0c;找出受影响的相关文件&#xff0c;最后按照规则单独编译这些文件。 Makefile文件&#xff1a;记录依赖关系和编译规则。 Makefile本质&#xff1a;无论多么复杂的语法&#xff0c;都是为了更好地解决…

m认知无线电网络中频谱感知的按需路由算法matlab仿真

目录 1.算法概述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法概述 使用无线电用户的频率范围在 9kHz 到 275GHz[3]&#xff0c;由于无线通信环境中的干扰、信道衰落和无线电收发设备自身属性等的影响&#xff0c;大部分无线电设备只能工作在 50GHz 以下。…

融媒体解决方案-最新全套文件

融媒体解决方案-最新全套文件一、建设背景二、建设思路三、建设方案二、获取 - 融媒体全套最新解决方案合集一、建设背景 随着互联网的快速发展&#xff0c;社会已步入全媒体时代&#xff0c;各媒体机构积极探索传统媒体转型之路。 为巩固壮大主流思想舆论&#xff0c;不断提…

对数的应用:放缩x轴或者y轴以更好地表达函数的结果

对数尺度的作用 yAxnyAx^nyAxn 在实验中 AAA 和 nnn 都是未知数&#xff0c;现在我想求出 AAA 和 nnn假设 n1.5,A1n1.5, A1n1.5,A1&#xff0c;那么我们可以做个图看看 x np.linspace(1,10,10) y 1 * x**3 plt.plot(y)如果我做实验恰好得到一些点&#xff0c;那么我很难知道…