牛客NC108 最大正方形【中等 动态规划 Java,Go,PHP】

news2024/9/29 8:11:40

题目

在这里插入图片描述
题目链接:
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 := 0
	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
}

参考答案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;
}

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

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

相关文章

【Linux】调试器-gdb的使用说明(调试器的配置,指令说明,调试过程说明)

目录 00.背景 01.安装 02.生成调试信息 03.调试过程 00.背景 在软件开发中&#xff0c;通常会为程序构建两种不同的版本&#xff1a;Debug模式和Release模式。它们之间的区别主要在于优化级别、调试信息、错误检查等方面&#xff1a; 1.Debug 模式&#xff1a; 优化级别低…

阿里云ECS服务器u1通用算力型CPU性能如何?

阿里云服务器u1是通用算力型云服务器&#xff0c;CPU采用2.5 GHz主频的Intel(R) Xeon(R) Platinum处理器&#xff0c;通用算力型u1云服务器不适用于游戏和高频交易等需要极致性能的应用场景及对业务性能一致性有强诉求的应用场景(比如业务HA场景主备机需要性能一致)&#xff0c…

Gremlin查询语言用法示例

Gremlin 的基本用法 Gremlin Query Language 的基本用法主要包括构建图遍历的查询语句&#xff0c;这些语句由一系列的步骤组成&#xff0c;用于从图形中检索数据和修改数据。以下是一些基本用法的示例和解释&#xff1a; 选择所有顶点&#xff1a; 使用g.V()可以选择图中的所…

包叔推荐12代i3-独显组装电脑主机配置清单

去年Intel第十代i5-依然是主流热选机型。 今年&#xff0c;随着i3-的价格优势越来越大&#xff0c;已经成功取代了i5-。 今天包叔推荐几套12代i3-独立显卡组装电脑主机配置。 列表&#xff1a;一组核心显示配置&#xff0c;其余三组均为独立显示配置。 适合主机预算在2000元至3…

Spring Cloud Gateway教程

1 微服务网关概述 Spring Cloud Gateway是在 Spring 生态系统之上构建的API网关服务&#xff0c;旨在为微服务架构应用提供一种简单有效的统一的API路由管理方式。 Spring Cloud Gateway主要功能&#xff1a; 反向代理认证鉴权流量控制熔断日志监控 2 Spring Cloud Gateway三…

搭建一个简单的网络结构(Pytorch实现二分类)

搭建一个简单的网络结构&#xff08;Pytorch实现二分类&#xff09; 搭建一个神经网络并进行训练的话&#xff0c;大致需要分为三步&#xff1a; 第一步是数据的处理&#xff0c;将数据整理成输入网络结构中合适的格式第二步是网络的搭建&#xff0c;包括每层网络的结构和前向…

Neo4j桌面版导入CVS文件

之后会出来一个提示框&#xff0c;而且会跳出相关文件夹&#xff1a; 然后我们将CSV文件放在此目录下&#xff1a; 我们的relation.csv是这样的 参见&#xff1a; NEO4J的基本使用以及桌面版NEO4J Desktop导入CSV文件_neo4j desktop使用-CSDN博客

数学建模体育建模和经济建模国防科大版

目录 6.体育中的数学建模 7.经济学问题中的数学建模 7.1.实物交换模型 7.2.边际效应 7.3.最佳消费选择模型 6.体育中的数学建模 体育科学的研究中&#xff0c;也有大量的数学建模问题&#xff0c;例如&#xff1a;棒球的最佳击球点问题、滑板滑雪赛道的设计、越野自行车比…

基于springboot+vue的旅游推荐系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

全网最强JavaWeb笔记 | 万字长文爆肝JavaWeb开发——Web开发介绍

万字长文爆肝黑马程序员2023最新版JavaWeb教程。这套教程打破常规&#xff0c;不再局限于过时的老套JavaWeb技术&#xff0c;而是与时俱进&#xff0c;运用的都是企业中流行的前沿技术。笔者认真跟着这个教程&#xff0c;再一次认真学习一遍JavaWeb教程&#xff0c;温故而知新&…

利用免费 GPU 部署体验大型语言模型推理框架 vLLM

vLLM简介 vLLM 是一个快速且易于使用的 LLM&#xff08;大型语言模型&#xff09;推理和服务库。 vLLM 之所以快速&#xff0c;是因为&#xff1a; 最先进的服务吞吐量 通过 PagedAttention 高效管理注意力键和值内存 连续批处理传入请求 使用 CUDA/HIP 图快速模型执行 量…

输入N个整数,输出这个整数两两组合且不重复的所有二元组,要求从小到大输出并且用括号的形式。

输入描述: 第一行输入一个整数N&#xff0c;N<30。 第二行输入N个整数。 输出描述: 按题意输出。 输入样例#: 3 1 2 3 输出样例#: (1,2) (1,3) (2,1) (2,3) (3,1) (3,2) #include <stdio.h>void quicksort(int s[],int min,int max); //快速排序int partitio…

那些王道书里的题目-----计算机网络篇

注&#xff1a;仅记录个人认为有启发的题目 p155 34.下列四个地址块中&#xff0c;与地址块 172.16.166.192/26 不重叠&#xff0c;且与172.16.166.192/26聚合后的地址块不会引入多余地址的是&#xff08;&#xff09; A.172.16.166.192/27 B.172.16.166.128/26 …

53 initrd/initramfs 相关

前言 呵呵 这里主要是 探究一下 根文件系统 相关的东西 以及 附加了一些 系统启动的相关信息 计算机启动 硬件重置寄存器 设置初始化数据 计算机访问 0xffff0, 执行 bios 的代码, bios 选择启动设备, 然后执行 启动设备 boolloader 的代码 bootloader 将 boot.img 加载…

玩具蛇(蓝桥杯)

文章目录 玩具蛇题目描述答案&#xff1a;552dfs 玩具蛇 题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 小蓝有一条玩具蛇&#xff0c;一共有 16 节&#xff0c;上面标着数字 1 至 16。每一节都是一个正方形的形…

GCC制作静态库详解

目录 前言 一.静态动态库区别 二.静态库制作 2.1 库文件命名 三.静态库文件制作 3.1 静态库制作 3.1.1 先获得.o文件 3.1.2 生成静态库文件 3.1.3 删除不必要文件 3.1.4 使用静态库 3.1.5 使用运行运行 前言 带大家快速入门&#xff0c;学会制作静态库。本文详细介绍在Linux系统…

“玩转文本魔法师:Python编程轻松变格式“

Hey小伙伴们&#xff0c;今天我们要一起打造一个文本转换器&#xff0c;就像神奇的魔法棒&#xff0c;能把普通的文字变成各种奇妙的格式&#xff01;想象一下&#xff0c;你的输入是&#xff1a;“Hello, World!”&#xff0c;输出可以是Markdown、HTML或者粗体、斜体的文字&a…

大语言模型(Large Language Model,LLM)简介

1. 什么是大语言模型 它是一种基于深度学习的人工智能模型&#xff0c;它从大量来自书籍、文章、网页和图像等来源的数据中学习&#xff0c;以发现语言模式和规则&#xff0c;如处理和生成自然语言文本。通常&#xff0c;大语言模型含数百亿&#xff08;或更多&#xff09;参数…

外包干了4年,技术退步明显.......

先说一下自己的情况&#xff0c;大专生&#xff0c;19年通过校招进入杭州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

GJB5000软件配置管理计划模板

1 范围 1.1 标识 本条应描述本文档所适用的系统和软件的完整标识&#xff0c;适用时&#xff0c;包括其标识号、名称、缩略名、版本号和发布号。 1.2 系统概述 本条应概述本文档所适用的系统和软件的用途。它还应描述软件的一般特性&#xff1b;概述软件开发、运行和维护…