当前位置: 首页 > article >正文

leetcode 2684. 矩阵中移动的最大次数

题目如下
在这里插入图片描述

数据范围
在这里插入图片描述

本题使用常规动态规划就行,不过要注意由于有三个转移的方向,所以我们对dp数组的遍历应该是从上到下 从左到右即按列优先遍历。

通过代码

class Solution {
public:
    int maxMoves(vector<vector<int>>& grid) {
        int n = grid.size();
        int m = grid[0].size();
        vector<vector<int>> dp(n,vector<int>(m,0));
        int ans = 0;
     
        for(int j = 1;j < m;j++){
            for(int i = 0;i < n;i++){
                
                if(j > 0 && grid[i][j] > grid[i][j - 1])dp[i][j] = max(dp[i][j],dp[i][j - 1] + 1);
                if(j > 0 && i > 0 && grid[i][j] > grid[i - 1][j - 1])dp[i][j] = max(dp[i][j],dp[i - 1][j - 1] + 1);
                if(j > 0 && i + 1 < n && grid[i][j] > grid[i + 1][j - 1])dp[i][j] = max(dp[i][j],dp[i + 1][j - 1] + 1);             if(dp[i][j] == 0)dp[i][j] = -1000000;
                //对于到不了的地方应该标记以防被后面的块作为有效路径算入
                ans = max(ans,dp[i][j]);
                
            }
            
        }
        /*for(int i = 0;i < n;i++){
            for(int j = 0;j < m;j++){
                cout << dp[i][j] << " ";
            }
            cout << endl;
        }*/
        return ans;
    }
};
//tips 当然本题同样可以利用滚动数组的思想用一维数组来存储上一轮的数组 这里不多赘述

在这里插入图片描述


http://www.kler.cn/a/545201.html

相关文章:

  • 【Unity3D优化】AssetBundle的压缩格式优化
  • C# ASP.NET的未来发展趋势
  • 【Vue3源码解析】应用实例创建及页面渲染
  • P1878 舞蹈课(详解)c++
  • 排序之选择排序(C# C++)
  • 《软件设计模式:构建高质量软件的基石》
  • Unity Shader Graph 2D - Procedural程序化图形酷炫的动画圆环
  • 2月12日鸿蒙生态日日新PLOG,多款应用上架
  • 前瞻技术:塑造未来生活的新趋势
  • 【WIN】桌面时钟使用笔记/桌面时钟推荐/win大屏时钟
  • STM32单片机示例:双核单片机点灯与调试(STM32H7x5 H7x7)
  • 【Elasticsearch】fingerprint分析器
  • DeepSeek R1 “顿悟时刻”(Aha Moment) 的重现与探索:基于 GRPO 的倒计时游戏训练
  • 数字货币市场历史数据获取API(含源代码)
  • vue3搭建实战项目笔记二
  • docker快速部署flink
  • Datawhale组队学习Ollama教程--Ollama介绍以及安装与配置
  • 星动纪元ERA-42:端到端原生机器人大模型的里程碑式突破
  • qml Page详解
  • vueDevtools和文档整合(前端常用工具/插件)