牛客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分。选手最…...
TTL门电路在现代数字设计中的应用:从基础到OC门实战
TTL门电路在现代数字设计中的应用:从基础到OC门实战 在数字电路设计的工具箱里,TTL(晶体管-晶体管逻辑)门电路就像瑞士军刀一样经典而实用。尽管CMOS技术如今占据主流,但TTL在特定场景下依然展现出独特的优势。特别是在…...
AIVideo效果对比展示:不同参数下的视频生成质量评测
AIVideo效果对比展示:不同参数下的视频生成质量评测 1. 开场白:参数设置对视频效果的影响 你有没有遇到过这样的情况:用AI生成视频时,明明输入的内容一样,但出来的效果却天差地别?有时候画面模糊不清&…...
check-dev-env - 开发环境依赖检测技能
check-dev-env - 开发环境依赖检测技能 技能概述 check-dev-env 是一个用于自动检查开发环境中常见依赖项是否已安装的 AI Agent 技能。该技能能够快速验证 Java、Maven、Node.js、NPM、Go、Python、Git 等主流开发工具的安装状态和版本号。 📋 元信息 项目说明技…...
嵌入式C编程挑战与防御性编程实践
1. 嵌入式C编程的核心挑战在嵌入式系统开发中,C语言因其接近硬件的特性和高效的执行效率成为首选语言。然而,嵌入式环境与通用计算环境存在显著差异,这些差异给程序员带来了独特的挑战。1.1 硬件资源的严格限制嵌入式设备通常具有:…...
ZFAKA发卡网搭建避坑实录:从YAF扩展安装到目录权限,我踩过的雷你别再踩了(Linux环境)
ZFAKA发卡网Linux搭建实战:关键问题解析与深度排雷指南 第一次在Linux上部署ZFAKA时,我本以为按照教程半小时就能搞定,结果却花了整整两天时间与各种报错信息搏斗。从YAF扩展的诡异报错到目录权限引发的连锁反应,每个环节都暗藏杀…...
LumiPixel Canvas Quest提示词反推(Interrogator)工具使用教程
LumiPixel Canvas Quest提示词反推(Interrogator)工具使用教程 1. 引言:为什么需要提示词反推工具 如果你经常使用AI绘画工具,一定遇到过这样的困扰:看到一张惊艳的作品,却不知道作者用了什么提示词。或者…...
Legacy-iOS-Kit系统降级全指南:让老旧iOS设备重获新生
Legacy-iOS-Kit系统降级全指南:让老旧iOS设备重获新生 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to downgrade/restore, save SHSH blobs, and jailbreak legacy iOS devices 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-Kit 一、问…...
提示工程延迟优化的终极技巧:这6个方法,让你无延迟
提示工程延迟优化终极指南:6个技巧让你的AI响应“飞”起来 1. 标题选项 《提示工程延迟优化终极指南:6个技巧让你的AI响应“飞”起来》《告别等待!提示工程延迟优化的6个关键方法》《AI响应慢?这6个提示工程技巧帮你解决延迟痛点》…...
亚马逊 API 签名认证机制详解
在调用亚马逊开放平台、亚马逊云服务(AWS)各类 API 时,签名认证是请求合法的核心门槛,目前主流采用 Signature Version 4(SigV4) 签名机制。它通过对请求内容与密钥做加密计算,实现身份校验、防…...
UE4蓝图插件推荐:这5款免费工具让你的开发效率翻倍(附详细使用技巧)
UE4蓝图插件推荐:5款免费工具解锁高效开发新姿势 第一次在虚幻引擎中搭建复杂交互逻辑时,我盯着满屏纠缠的连线发呆了半小时——这简直比解毛线团还令人崩溃。直到发现那些藏在社区角落的蓝图效率神器,才意识到原来80%的重复劳动都可以交给插…...
