alg--动态规划(dynamic planning)
怎么开头呢?
一句话概括吧, dp的思想就是递归的反思想。
参考的理化:
https://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741374.html
example:
70. 爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。
示例 1:
输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。
1. 1 阶 + 1 阶
2. 2 阶
示例 2:
输入: 3
输出: 3
解释: 有三种方法可以爬到楼顶。
1. 1 阶 + 1 阶 + 1 阶
2. 1 阶 + 2 阶
3. 2 阶 + 1 阶
递归法:
int climbStairs_re(int n) { if (n < 1) return 0; if (2 >= n) return n; return (climbStairs(n - 1) + climbStairs(n - 2)); }
dp法:
int climbStairs(int n) { int i = 0; int aiDp[n + 1]; if ((1 == n) || (2 == n)) return n; memset(aiDp, 0, (n + 1) * sizeof(int)); aiDp[1] = 1; aiDp[2] = 2; if (n <= 2) return aiDp[n]; for (i = 3; i <= n; i++) { aiDp[i] = aiDp[i - 1] + aiDp[i - 2]; } return aiDp[n]; }
结果比较:
很多时候我都在期待3年后的自己是一个什么样的,5年后自己又是一个什么样的。因为未知,所以生命才更加精彩。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步