牛客NC108 最大正方形【中等 动态规划 Java,Go,PHP】
题目
题目链接:
https://www.nowcoder.com/practice/0058c4092cec44c2975e38223f10470e
思路
动态规划:
先初始化第一行和第一列。然后其他单元格依赖自己的上边,左边和左上角
参考答案Java
import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** 最大正方形* @param matrix char字符型二维数组* @return int整型*/public int solve (char[][] matrix) {// 动态规划://先初始化第一行和第一列。然后其他单元格依赖自己的上边,左边和左上角if (matrix == null || matrix.length == 0) return 0;int n = matrix.length;int m = matrix[0].length;int[][] dp = new int[n][m];int ans = 0;for (int j = 0; j < m ; j++) {if (matrix[0][j] == '1') {dp[0][j] = 1;ans = 1;}}for (int i = 0; i < n ; i++) {if (matrix[i][0] == '1') {dp[i][0] = 1;ans = 1;}}for (int i = 1; i < n ; i++) {for (int j = 1; j < m ; j++) {if (matrix[i][j] == '1') {int p1 = dp[i - 1][j - 1];int p2 = dp[i][j - 1];int p3 = dp[i - 1][j];int cur = p1;if (cur > p2) cur = p2;if (cur > p3) cur = p3;dp[i][j] = cur + 1;if (ans < dp[i][j]) {ans = dp[i][j];}}}}return ans * ans;}
}
参考答案Go
package main/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** 最大正方形* @param matrix char字符型二维数组* @return int整型*/
func solve(matrix [][]byte) int {// 动态规划://先初始化第一行和第一列。然后其他单元格依赖自己的上边,左边和左上角if matrix == nil || len(matrix) == 0 {return 0}n := len(matrix)m := len(matrix[0])dp := make([][]int, n)for i := 0; i < n; i++ {dp[i] = make([]int, m)}ans := 0for j := 0; j < m; j++ {if matrix[0][j] == '1' {dp[0][j] = 1ans = 1}}for i := 0; i < n; i++ {if matrix[i][0] == '1' {dp[i][0] = 1ans = 1}}for i := 1; i < n; i++ {for j := 1; j < m; j++ {if matrix[i][j] == '1' {p1 := dp[i-1][j-1]p2 := dp[i][j-1]p3 := dp[i-1][j]cur := p1if cur > p2 {cur = p2}if cur > p3 {cur = p3}dp[i][j] = cur + 1if ans < cur+1 {ans = cur + 1}}}}return ans * ans
}
参考答案PHP
<?php/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** 最大正方形* @param matrix char字符型二维数组 * @return int整型*/
function solve( $matrix )
{// 动态规划://先初始化第一行和第一列。然后其他单元格依赖自己的上边,左边和左上角if($matrix ==null || count($matrix) ==0) return 0;$n = count($matrix);$m = count($matrix[0]);$ans = 0;$dp = array();for ($j=0;$j<$m;$j++){if($matrix[0][$j] =='1'){$dp[0][$j] =1;$ans=1;}}for($i=0;$i<$n;$i++){if($matrix[$i][0] =='1'){$dp[$i][0] =1;$ans =1;}}for($i=1;$i<$n;$i++){for($j=1;$j<$m;$j++){if($matrix[$i][$j] =='1'){$p1 = $dp[$i-1][$j-1];$p2 = $dp[$i][$j-1];$p3 = $dp[$i-1][$j];$cur =$p1;if($cur > $p2)$cur = $p2;if($cur> $p3) $cur =$p3;$dp[$i][$j] = $cur+1;if($ans < $cur+1){$ans = $cur+1;}}}}return $ans*$ans;
}
相关文章:

牛客NC108 最大正方形【中等 动态规划 Java,Go,PHP】
题目 题目链接: https://www.nowcoder.com/practice/0058c4092cec44c2975e38223f10470e 思路 动态规划: 先初始化第一行和第一列。然后其他单元格依赖自己的上边,左边和左上角参考答案Java import java.util.*;public class Solution {/*** 代码中的类…...

C#学生信息成绩管理系统
一、系统功能描述 本系统包括两类用户:学生、管理员。管理员可以通过系统来添加管理员信息、修改管理员信息、添加学生信息、修改学生信息;开设课程、查询课程、录入成绩、统计成绩、修改成绩、修改个人密码等,而学生则可以通过系统来选择课…...

精品凉拌菜系列热卤系列课程
这一系列课程涵盖精美凉拌菜和美味热卤菜的制作技巧。学员将学习如何选材、调味和烹饪,打造口感丰富、色香俱佳的菜肴。通过实践训练,掌握独特的烹饪技能,为家庭聚餐或职业厨艺提升增添亮点。 课程大小:6.6G 课程下载࿱…...

Java代码基础算法练习-求一个三位数的各位数字之和-2024.03.27
任务描述: 输入一个正整数n(取值范围:100<n<1000),然后输出每位数字之和 任务要求: 代码示例: package M0317_0331;import java.util.Scanner;public class m240327 {public static voi…...

Excel 十字交叉聚光灯查询,再也不用担心看串行与列
当Excel表格行列较多时,要想跟条件找到目标数据可以用查找引用函数自动调取,如果又想让找出来的结果突出显示,有什么好办法呢? 先来看一个做好的案例效果,用户选择查询条件后,结果突出显示。 当查询条件变…...
集合和字符串的使用
文章目录 一、集合概述二、Collection2.1 List接口2.2 Set接口(不常用)2.2.1 TreeSet 三、Map接口四、Collections工具类五、String六、String类型转换6.1 基本数据类型6.2 基本数据类型、包装类 --> String6.3 String与char[]6.4 String与byte[] 一、…...

Wagtail-基于Python Django的内容管理系统CMS实现公网访问
目录 ⛳️推荐 前言 1. 安装并运行Wagtail 1.1 创建并激活虚拟环境 2. 安装cpolar内网穿透工具 3. 实现Wagtail公网访问 4. 固定Wagtail公网地址 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给…...
Python入门级题目及答案
前言: 学习Python作为一门编程语言是非常有必要的,因为Python简单易学,功能强大,应用广泛。在本篇博客中,我们将提供八道Python入门级的题目,每道题目都伴有详细的描述和对应的答案代码。通过完成这八道题目…...

【C语言基础】:字符串函数(二)
文章目录 一、strncpy函数的使用二、strncat函数的使用三、strncmp函数的使用四、strstr函数的使用和模拟实现4.1 strstr函数的使用4.2 strstr函数的模拟实现 五、strtok函数的使用六、strerror函数的使用 书山有路勤为径,学海无涯苦作舟。 创作不易,宝子…...
【Docker】Docker资源(创建容器)CPU/内存/磁盘IO/GPU限制与分配教程
Docker资源创建容器CPU/内存/磁盘IO/GPU限制与分配 一、关键概念解释二、Docker分配CPU资源限制三、Docker分配内存资源限制四、Docker容器中对磁盘IO进行限制五、Docker对GPU资源限制管理 一、关键概念解释 【cgroup】 cgroups名称源自控制组群(control g…...

发展规划--IM系统
1、时代背景 5G应用,多终端应用,物联网应用,小程序,工业互联,大数据应用等等大前端时代的到来,程序员不能只关注crud,因为以后的服务并发量只会越来越多。 高并发架构师、大数据架构师或者说j…...

stm32平衡车
目录 一.所需材料 二.PID算法(简单说明) 直立环 速度环 串级PID 三.使用到的外设 1.定时器输出比较-PWM 2.定时器编码器模式 3.编码器读取速度 4.电机驱动函数 5.外部中断 四、小车 调试 一.所需材料 1.陀螺仪MPU6050--读取三轴的加速度…...
google浏览器下载文件提示无法安全地下载怎么解决?
在使用google浏览器下载文件的时候,弹出了“无法安全下载”的提示,搞了文件都下载不下来,网上查了一下,是因为chrome认为使用非https链接下载文件是不安全的,在新版本中阻止了用户下载。 目录 1、打开google浏览器的设置...

Navicat 干货 | 通过检查约束确保 PostgreSQL 的数据完整性
数据完整性对于任何数据库系统来说都是很重要的一方面,它确保存储的数据保持准确、一致且有意义的。在 PostgreSQL 中,维护数据完整性的一个强大工具是使用检查约束。这些约束允许你定义数据必须遵守的规则,以防止无效数据的插入或修改。本文…...

FPGA时钟资源详解(2)——Clock-Capable Inputs
FPGA时钟系列文章总览:FPGA原理与结构(14)——时钟资源https://ztzhang.blog.csdn.net/article/details/132307564 目录 一、概述 1.1 为什么使用CC 1.2 如何使用CC 二、Clock-Capable Inputs 2.1 SRCC 2.2 MRCC 2.3 其他用途 2.3.1…...
使用JMeter的JSON提取器:通过递归下降查找,从接口响应中提取特定字段
在接口测试中,我们经常需要从返回的JSON数据中提取特定字段以便后续使用。JMeter提供了JSON提取器,可以帮助我们实现这一目标。本文将介绍如何使用JMeter的JSON提取器通过递归下降查找的方式从接口响应中提取特定字段,并通过示例解释JSON表达…...
Js全部循环方法解析
forEach方法 没有返回值,与 for 循环没有什么区别。 [1,2,3,4,5,6,7,8,9,0].forEach(item > {console.log(item); })map方法 返回一个新数组,不改变原数组。通过return内的操作后的数据 const newArr [1,2,3,4,5,6,7,8,9,0].map(item > {retu…...

高阶SQL语句(二)
一 子查询 也被称作内查询或者嵌套查询,是指在一个查询语句里面还嵌套着另一个查询语 句。子查询语句 是先于主查询语句被执行的,其结果作为外层的条件返回给主查询进行下一 步的查询过滤。 ①子语句可以与主语句所查询的表相同,也可以是不…...

Phoenix伪分布安装
引言 Phoenix是构建在HBase上的一个SQL层,能让我们用标准的JDBC APIs而不是HBase客户端APIs来创建表,插入数据和对HBase数据进行查询。Phoenix完全使用Java编写,作为HBase内嵌的JDBC驱动。Phoenix查询引擎会将SQL查询转换为一个或多个HBase扫…...

Python算法100例-4.6 歌星大奖赛
完整源代码项目地址,关注博主私信源代码后可获取 1.问题描述2.问题分析3.算法设计4.确定程序框架5.完整的程序6.问题拓展7.知识点补充 1.问题描述 在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...

OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
OD 算法题 B卷【正整数到Excel编号之间的转换】
文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的:a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理
在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...
【实施指南】Android客户端HTTPS双向认证实施指南
🔐 一、所需准备材料 证书文件(6类核心文件) 类型 格式 作用 Android端要求 CA根证书 .crt/.pem 验证服务器/客户端证书合法性 需预置到Android信任库 服务器证书 .crt 服务器身份证明 客户端需持有以验证服务器 客户端证书 .crt 客户端身份…...