【力扣 困难 C】329. 矩阵中的最长递增路径

目录

题目

解法一


题目

待添加

解法一

cpp 复制代码
int max(int a, int b) {
    return a > b ? a : b;
}

int search(int** matrix, int m, int n, int i, int j, int (*dp)[n]) {
    if (dp[i][j]) {
        return dp[i][j];
    }
    
    int len = 0;
    if (i > 0 && matrix[i - 1][j] > matrix[i][j]) {
        len = max(len, search(matrix, m, n, i - 1, j, dp));
    }
    if (i + 1 < m && matrix[i + 1][j] > matrix[i][j]) {
        len = max(len, search(matrix, m, n, i + 1, j, dp));
    }
    if (j > 0 && matrix[i][j - 1] > matrix[i][j]) {
        len = max(len, search(matrix, m, n, i, j - 1, dp));
    }
    if (j + 1 < n && matrix[i][j + 1] > matrix[i][j]) {
        len = max(len, search(matrix, m, n, i, j + 1, dp));
    }
    dp[i][j] = len + 1;
    return dp[i][j];
}

int longestIncreasingPath(int** matrix, int matrixSize, int* matrixColSize) {
    const int m = matrixSize, n = *matrixColSize;

    int dp[m][n];
    memset(dp, 0, sizeof(dp));

    int len = 0;
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            len = max(len, search(matrix, m, n, i, j, dp));
        }
    }
    return len;
}
相关推荐
wydaicls1 小时前
C语言对单链表的操作
c语言·数据结构·算法
傻童:CPU1 小时前
C语言需要掌握的基础知识点之排序
c语言·算法·排序算法
傻童:CPU8 小时前
C语言需要掌握的基础知识点之前缀和
java·c语言·算法
degen_8 小时前
第一次进入 PEICORE 流程
c语言·笔记
我是大咖9 小时前
C语言-贪吃蛇项目开发工具篇---ncursee库安装
c语言·开发语言
czy87874759 小时前
用C语言实现单例模式
c语言·单例模式
czy878747510 小时前
用C语言实现适配器模式
c语言·适配器模式
im_AMBER10 小时前
Leetcode 33
算法·leetcode·职场和发展
La Pulga11 小时前
【STM32】RTC实时时钟
c语言·stm32·单片机·嵌入式硬件·mcu·实时音视频
坚持编程的菜鸟13 小时前
LeetCode每日一题——二进制求和
c语言·算法·leetcode