Cangjie/Exercises动态规划完全指南从爬楼梯到仓颉递归与DP的本质区别【免费下载链接】Exercises本仓收集仓颉算法题解程序项目地址: https://gitcode.com/Cangjie/Exercises本仓库Cangjie/Exercises收集了用仓颉语言Cangjie编写的算法题解其中 思想-动态规划.cj 和 动态规划.cj 覆盖了爬楼梯、打家劫舍、背包问题、最长递增子序列等经典动态规划DP题。本指南将带你从零理解动态规划思想并搞懂递归与动态规划最本质的区别帮你快速上手仓颉 DP 实战。一、动态规划是什么一句话讲透动态规划 把大问题拆成小问题 记住小问题的答案它有两个灵魂特征 最优子结构大问题的最优解由子问题的最优解组成比如爬到第 n 阶的方案数 爬到第 n-1 阶 爬到第 n-2 阶的方案数。重叠子问题递归会反复算同一批子问题DP 用一张表dp 数组把结果缓存起来只算一次。 记忆口诀定义状态 → 写出状态转移方程 → 确定初始值 → 按顺序填表 → 取答案。算法竞赛入门到进阶——本仓库 【图书】算法竞赛入门到进阶 目录收录了配套的仓颉题解是 DP 进阶的好教材二、从爬楼梯开始你的第一道 DP 题爬楼梯是动态规划入门的Hello World每次爬 1 阶或 2 阶问爬到 n 阶有多少种方法状态定义dp[i]表示爬到第 i 阶的方案数。状态转移dp[i] dp[i-1] dp[i-2]阶数 i12345dp[i]12358规律一眼可见这不就是斐波那契数列吗仓颉实现见 climbStairs 方法作者做了一处漂亮的优化——既然dp[i]只依赖前两项就用两个变量滚动代替整张表把空间复杂度从 O(N) 压到O(1)pre2记录dp[i-2]pre1记录dp[i-1]每轮计算cur pre1 pre2然后整体前移一格这是 DP 空间优化的通用套路后面打家劫舍同样适用 ✅三、递归 vs 动态规划最本质的区别很多人分不清递归和 DP其实一句话就能说清源自源码注释的精髓递归和动态规划都是将原问题拆成多个子问题然后求解他们之间最本质的区别是动态规划保存了子问题的解避免重复计算。用一张表对比 对比维度递归动态规划思路方向自顶向下大问题 → 拆子问题自底向上小问题 → 堆出大问题子问题结果默认每次重算除非手动加记忆化存入 dp 表每个子问题只解一次额外开销函数调用栈n 大时易栈溢出仅数组空间可滚压优化本质天然分治分治 缓存Memoization一个直观例子递归求斐波那契fib(n) fib(n-1) fib(n-2)算fib(5)时fib(3)会被重复计算好多次而 DP 填表时dp[3]只算一次后续直接查表。 换句话说递归是过程动态规划是带缓存的结果。带记忆化的递归和自底向上的 DP 殊途同归但 DP 填表写法没有调用栈深度限制更适合刷题。四、DP 题型家族一个方程走遍 LeetCode本仓库 ThinkDynamicPlan 类 用统一思路解了 20 道经典题按状态转移方程可以分成几大题型家族4.1 线性 DP打家劫舍不能偷相邻房屋转移方程dp[i] max(dp[i-2] nums[i], dp[i-1)——偷这家与跳过这家二选一。环形版本 rob2 则拆成两段线性问题取最大值。4.2 二维 DP矩阵路径类最小路径和dp[i][j] min(dp[i-1][j], dp[i][j-1]) grid[i][j]不同路径数dp[i][j] dp[i-1][j] dp[i][j-1]二维表可以沿边缘滚压成一维minPathSum 就演示了这种写法。4.3 背包 DP0-1 背包经典中的经典dp[i][j] max(dp[i-1][j], dp[i-1][j-w] v)含义是第 i 件物品不放 or 放。仓库里同时给出了二维版与一维滚压版 knapsack / knapsack2一维版从右往左遍历是新手最容易踩的坑 ⚠️4.4 子序列 DP最长递增子序列LISdp[i] max(dp[j] 1)j 为满足nums[j] nums[i]的所有前置位置最长公共子序列LCS字符相同则dp[i][j] dp[i-1][j-1] 1否则取上方与左方的较大值见 longestCommonSubsequence4.5 剑指 Offer 系列swordoffer/动态规划.cj 收录了斐波那契、矩形覆盖、青蛙跳台阶含变态跳台阶进阶版、连续子数组最大和等面试题全部用滚压变量实现代码风格与 LeetCode 篇完全一致适合作为第二遍练习。五、如何在仓颉中高效写 DP结合仓库实现仓颉写 DP 有几个值得注意的点数组初始化的惯用法ArrayInt(n 1, repeat: 0)一行建好 dp 表二维表用构造闭包ArrayArrayInt(rows) { _ ArrayInt(columns, repeat: 0) }见 minPathSum2。闭包嵌套复用环形打家劫舍里内部闭包rob(first, last)复用了同一段线性 DP 逻辑避免代码重复。纯函数 类封装每道题都是一个func按题型分组到ThinkDynamicPlan类中结构清晰、便于测试入口在 main.cj。注释即文档每个函数头部都保留了原题描述// MARK:行标注了状态转移方程读代码就是读题解。项目整体结构说明见 算法思想解题合集/README.md。六、快速开始把仓库拉到本地如果你也想边读源码边运行只需 clone 仓库本仓库为只读题解直接跑即可git clone https://gitcode.com/Cangjie/Exercises.git然后安装仓颉语言工具链进入 算法思想解题合集 目录用仓颉包管理器cjpm管理依赖并运行 main.cj 即可看到各题解的执行过程。七、学习路线建议给新手的一条 DP 进阶路线 第 1 周吃透爬楼梯、斐波那契、矩形覆盖一维线性 DP 滚压优化第 2 周打家劫舍系列、最小路径和、不同路径数二维 DP 与边界初始化第 3 周最长递增子序列、最长公共子序列子序列 DP第 4 周0-1 背包、分割整数、解码方法带选择的 DP配套资源仓库 【图书】算法竞赛入门经典 与 【图书】算法竞赛入门到进阶 目录均收录了对应例题的仓颉实现可作为 DP 之外的算法体系补充。总结动态规划不是玄学而是拆问题 存答案的机械流程。记住递归与 DP 的本质区别——缓存子问题的解——再沿着状态定义 → 转移方程 → 填表取答案四步走配合本仓库的仓颉题解反复对照练习你就能从爬楼梯一路走到背包与子序列的进阶题目。【免费下载链接】Exercises本仓收集仓颉算法题解程序项目地址: https://gitcode.com/Cangjie/Exercises创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
Strands Agents MCP集成:访问数千个预构建工具的完整教程 Strands Agents MCP集成:访问数千个预构建工具的完整教程 【免费下载链接】harness-sdk Build an agent harness and control it end-to-end. Open-source SDK for production AI agents in Python & TypeScript - any model, any cloud. 项目地址: https://g… · 2026/9/24 15:16:53
prompt_toolkit 3.0 升级完全指南:从 asyncio 迁移到对话框 API 变更 CLI 【免费下载链接】python-prompt-toolkit Library for building powerful interactive command line applications in Python 项目地址: https://gitcode.com/gh_mirrors/py/python-prompt-toolkit 点击查看 免费下载 本文以官方升级文档 docs/pages/upgrading/… · 2026/9/24 15:16:53
Redwood 8.0 部署指南:通过 Coherence 在 GCP/AWS 上实现全生命周期环境自动化 Redwood 8.0 部署指南:通过 Coherence 在 GCP/AWS 上实现全生命周期环境自动化 【免费下载链接】redwood RedwoodGraphQL 项目地址: https://gitcode.com/gh_mirrors/re/redwood
Coherence 是 Redwood 官方支持的一款 serverful(服务器型… · 2026/9/24 15:42:19
AuK如何实现自然语言指令统一控制14+语音任务:代码实现原理逐层解读 AuK如何实现自然语言指令统一控制14语音任务:代码实现原理逐层解读 【免费下载链接】AuK 项目地址: https://ai.gitcode.com/tencent_hunyuan/AuK
AuK 是腾讯混元开源的 1.5B 参数语音生成与编辑基础模型,核心能力正是用一句自然语言指令统一控制… · 2026/9/24 15:42:19
Windows 版 Codex 更新后打不开窗口或启动不了:排查与修复方法(详细版) Windows 版 Codex 更新后,有一种比较特殊的启动故障:点击 Codex 图标后,桌面上没有任何窗口,但打开任务管理器,却能够看到一个或多个 ChatGPT.exe 进程正在运行。有时候结束进程重新打开仍然如此,甚至重启 … · 2026/9/24 15:42:19
钠电储能进了城中村:台区治理的活,电站储能为什么不太一样 这两年,储能开始往离用户更近的地方走。据南方电网报报道,9 月中旬,深圳供电局在墩背新村 8 号公变台区完成一套钠离子电池储能装置的接入调试并正式投运。过去谈储能,更多是在说新能源电站、独立储能电站和大型电网侧项目。现在&… · 2026/9/24 15:42:06
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44