从本篇开始,我们就正式开始进入 动态规划 系列文章的学习。
本文先来练习两道通过 建立缓存表 优化解题过程的题目,对如何将 递归函数 修改成 动态规划 的流程有个基本的熟悉。
基本流程
- 用最简单的想法完成题目要求的 递归 函数;
- 定义明确 递归函数 的功能!!!
分析是否存在 重叠子问题 ,即能否进行 剪枝 操作;
建立 数组或集合 缓存,寻找 状态转移方程 ,完成动态规划。
不太懂没关系,相信通过下面两道题目的练习就能找到感觉。
走到目标位置
假设有 N 个位置从左到右排成一排,记为 1 ~ N 。一个机器人开始在 start 位置上(1 ≤ start ≤ N),可以往左或者往右走,规定机器人只能走 K 步,最终能来到 aim(1 ≤ aim ≤ N) 位置的方法有多少种。
注意:
若机器人在 1