LCR 112. 矩阵中的最长递增路径【leetcode】/dfs+记忆化搜索

news/2024/7/20 23:09:26 标签: 矩阵, leetcode, 深度优先

LCR 112. 矩阵中的最长递增路径

给定一个 m x n 整数矩阵 matrix ,找出其中 最长递增路径 的长度。

对于每个单元格,你可以往上,下,左,右四个方向移动。 不能 在 对角线 方向上移动或移动到 边界外(即不允许环绕)。

示例 1:
在这里插入图片描述

输入:matrix = [[9,9,4],[6,6,8],[2,1,1]]
输出:4
解释:最长递增路径为 [1, 2, 6, 9]。

示例 2:
在这里插入图片描述

输入:matrix = [[3,4,5],[3,2,6],[2,2,1]]
输出:4
解释:最长递增路径是 [3, 4, 5, 6]。注意不允许在对角线方向上移动。

示例 3:
输入:matrix = [[1]]
输出:1

提示:
m == matrix.length
n == matrix[i].length
1 <= m, n <= 200
0 <= matrix[i][j] <= 231 - 1

dfs+记忆化搜索

dp[i][j]表示以matrix[i][j]为出发点的最长递增路径

class Solution {
public:
    int res=0;
    int dp[205][205];
    int dfs(vector<vector<int>>& matrix,int m,int n,int x,int y)
    {
        //如果dp[x][y]不为0,则表示已经有记录,直接返回长度
        if(dp[x][y]) return dp[x][y];
        if(x+1<m&&matrix[x+1][y]>matrix[x][y]) dp[x][y]=max(dp[x][y],dfs(matrix,m,n,x+1,y)+1);
        if(y+1<n&&matrix[x][y+1]>matrix[x][y]) dp[x][y]=max(dp[x][y],dfs(matrix,m,n,x,y+1)+1);
        if(x-1>=0&&matrix[x-1][y]>matrix[x][y]) dp[x][y]=max(dp[x][y],dfs(matrix,m,n,x-1,y)+1);
        if(y-1>=0&&matrix[x][y-1]>matrix[x][y]) dp[x][y]=max(dp[x][y],dfs(matrix,m,n,x,y-1)+1);
        return dp[x][y];
    }
    int longestIncreasingPath(vector<vector<int>>& matrix) 
    {
        int m=matrix.size();
        int n=matrix[0].size();
        //遍历每个点
        for(int i=0;i<m;i++)
        {
            for(int j=0;j<n;j++)
            {
                res=max(res,dfs(matrix,m,n,i,j));
            }
        }
        return res+1;
    }
};

http://www.niftyadmin.cn/n/5418687.html

相关文章

Stable Diffusion 3报告

报告链接&#xff1a;https://stability.ai/news/stable-diffusion-3-research-paper 文章目录 要点表现架构细节通过重新加权改善整流流量Scaling Rectified Flow Transformer Models灵活的文本编码器RF相关论文 要点 发布研究论文&#xff0c;深入探讨Stable Diffuison 3的…

Linux运维_Bash脚本_编译安装GTK+-3.24.41

Linux运维_Bash脚本_编译安装GTK3.24.41 Bash (Bourne Again Shell) 是一个解释器&#xff0c;负责处理 Unix 系统命令行上的命令。它是由 Brian Fox 编写的免费软件&#xff0c;并于 1989 年发布的免费软件&#xff0c;作为 Sh (Bourne Shell) 的替代品。 您可以在 Linux 和…

React useMemo钩子指南:优化计算性能

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Jenkens 发布配置Vue

1、环境 1.1 、检查nodejs 检查nodejs 如果安装则跳过&#xff0c;如果没有安装则进入 Dashboard->Manage Jenkins-Plugins 选择Available plugins 输入nodejs 如果有自己需要的版本则选中直接安装&#xff0c;如果没有&#xff0c;则需要自己下载安装。 自己下载 可以…

Python基础学习(8)函数进阶-闭包/装饰器

文章目录 一,闭包函数二,装饰器&#xff08;重要&#xff09; 三,递归 Python基础学习(1)基本知识 Python基础学习(2)序列类型方法与数据类型转换 Python基础学习(3)进阶字符串(格式化输出) Python基础学习(4)散列类型(无序序列) Python基础学习(5)流程控制 Python基础学习(6)函…

贪心算法: 奶牛做题

5289. 奶牛做题 - AcWing题库 贝茜正在参加一场奶牛智力竞赛。 赛事方给每位选手发放 n 张试卷。 每张试卷包含 k 道题目&#xff0c;编号 1∼k。 已知&#xff0c;不同卷子上的相同编号题目的难度相同&#xff0c;解题时间也相同。 其中&#xff0c;解决第 i 道题&#xff08;…

运行报错No matching constructor for initialization of ‘AES::Encryption‘你们遇到过么?

这两天在搞android 的调用JNI这块&#xff0c;想把本地的加密搞到.so文件里面&#xff0c;这样反编译的成本会高一些&#xff0c;安全性相对来说高一些。不过研究到一半卡住了,这个领域不太熟悉。 这个错误 "no matching constructor for initialization of AES::Decrypt…

geoserver+mapbox-gl 离线部署矢量切片地图服务学习笔记

geoserver安装 geoserver的安装包可以在官网下载Download - GeoServer&#xff0c;想要选择版本点击Archived找到指定版本进行下载http://geoserver.org/download/ &#xff08;如果网络不稳定&#xff0c;也可以直接使用下面的下载地址&#xff09; geoserver-2.15.0.rar资…