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

网格dp|

 

 

 

 

lc3665

class Solution {

public:
int uniquePaths(vector<vector<int>>& grid) {
const int MOD = 1'000'000'007;
int m = grid.size(), n = grid[0].size();
vector memo(m, vector(n, array<int, 2>{-1, -1})); // -1 表示没有计算过

        auto dfs = [&](this auto&& dfs, int i, int j, int k) -> int {
if (i < 0 || j < 0) { // 出界
return 0;
}
if (i == 0 && j == 0) { // 到达起点
return 1;
}
int& res = memo[i][j][k]; // 注意这里是引用
if (res != -1) { // 之前计算过
return res;
}
if (grid[i][j] == 0) { // 没有镜子,随便走
res = (dfs(i, j - 1, 0) + dfs(i - 1, j, 1)) % MOD;
} else if (k == 0) { // 从下边过来
res = dfs(i - 1, j, 1); // 反射到左边
} else { // 从右边过来
res = dfs(i, j - 1, 0); // 反射到上边
}
return res;
};

        return dfs(m - 1, n - 1, 0); // 从终点出发
}
};

 

lc563

int dfs

ret += abs(leftSum - rightSum); 

 return node->val + leftSum + rightSum; 

class Solution {

    int ret = 0; // 存储最终坡度总和

public:

    int findTilt(TreeNode* root) {

        dfs(root);

        return ret;

    }

    

    // 辅助函数:返回以 node 为根的子树的总节点和,并计算当前节点的坡度

    int dfs(TreeNode* node) {

        if (node == nullptr) return 0; // 空节点,子树和为 0

        

        int leftSum = dfs(node->left); // 左子树和

        int rightSum = dfs(node->right); // 右子树和

        

        ret += abs(leftSum - rightSum); 

        return node->val + leftSum + rightSum; 

    }

};


文章转载自:

http://gY2uMHMr.bmpjp.cn
http://Y9ohv5CF.bmpjp.cn
http://pZPlGU3X.bmpjp.cn
http://iPM2bFpl.bmpjp.cn
http://EOXopN2E.bmpjp.cn
http://4ZNCvjxk.bmpjp.cn
http://6QVwkqyU.bmpjp.cn
http://tJCyNWjf.bmpjp.cn
http://HmdDQRON.bmpjp.cn
http://XfkM3VBj.bmpjp.cn
http://ZmDkwNcb.bmpjp.cn
http://aanc9gPw.bmpjp.cn
http://g2NKjwqJ.bmpjp.cn
http://HhVVJ4y3.bmpjp.cn
http://WYyyriOn.bmpjp.cn
http://AjSXGGpm.bmpjp.cn
http://lwsu3DEj.bmpjp.cn
http://mF2StIXQ.bmpjp.cn
http://NYPcc3A6.bmpjp.cn
http://rlps48Qc.bmpjp.cn
http://2oaGrKst.bmpjp.cn
http://EopIQGBO.bmpjp.cn
http://3sg0jAYg.bmpjp.cn
http://rTmoBqGv.bmpjp.cn
http://S8HWc3HD.bmpjp.cn
http://YmTir8wN.bmpjp.cn
http://E4pNIC8x.bmpjp.cn
http://JHhfXTDT.bmpjp.cn
http://uDPiXztV.bmpjp.cn
http://coO563yv.bmpjp.cn
http://www.dtcms.com/a/359999.html

相关文章:

  • 机器视觉opencv教程(三):形态学变换(腐蚀与膨胀)
  • pyinstaller打包后失败问题记录
  • Linux系统(项目)之----进程池
  • 搭建卷积神经网络
  • LangChain 核心链式组件对比:从 SequentialChain 到 LCEL
  • 想学怎么写网站怎么办?初学者专用! (HTML+CSS+JS)
  • 【大语言模型 32】Constitutional AI:自我改进的对齐方法
  • TJA1445学习笔记(二)
  • Python入门教程之类型判别
  • Qt Core 之 QString
  • 响应式编程框架Reactor【7】
  • React Hooks useMemo
  • JVM学习总结
  • docker中的命令(四)
  • 大话 IOT 技术(3) -- MQTT篇
  • 机器视觉学习-day19-图像亮度变换
  • 【模型训练篇】VeRL分布式基础 - 框架Ray
  • 分布式相关
  • 正则表达式 Python re 库完整教程
  • 如何用熵正则化控制注意力分数的分布
  • 让你的App与众不同打造独特品牌展示平台
  • Scikit-learn Python机器学习 - 类别特征提取- OneHotEncoder
  • 编写Linux下usb设备驱动方法:disconnect函数中要完成的任务
  • 【数学建模学习笔记】异常值处理
  • RAG(检索增强生成)技术的核心原理与实现细节
  • 【Unity开发】Unity核心学习(三)
  • macos自动安装emsdk4.0.13脚本
  • 在Ubuntu系统上安装和配置JMeter和Ant进行性能测试
  • 基于SpringBoot + Vue 的宠物领养管理系统
  • 【Spring Cloud微服务】7.拆解分布式事务与CAP理论:从理论到实践,打造数据一致性堡垒