【LeetCode周赛】6433.矩阵中移动的最大次数

动态规划五部曲

class Solution {
   
public:
    int maxMoves(vector<vector<int>>& grid) {
   
        /*
            动态规划解决单序列问题:
                根据题目的特点找出当前遍历元素对应的最优解(或解的数目)和前面若干元素(通常是一个或两个)的最优解(或解的数目)的关系,并以此找出相应的状态转移方程。
            
            从题目的描述来看,需要从当前遍历的元素dp更新未来的dp值,这显然不符合动态规划的思想,所以需要将问题进行转换,转换为从对应的三个单元格移动到当前[i, j]
        */

        // 确定行、列数
        int rows = grid.size();
        int cols = grid[0].size();

        // 确定dp数组以及下标含义
        // dp[i][j]表示从[i + 1][j - 1]、[i, j - 1]、[i - 1][j - 1]三个单元格移动到[i, j]位置所能够移动的最大次数
        // 初值都为INT_MIN避免了从其它列出发而出现错误值1,题目要求只能从第一列开始出发移动
        vector<vector<int>> dp(rows

你可能感兴趣的:(LeetCode,leetcode,算法)