• 将问题的规模从 n ⇒ n-1(n/2,或者其他更小的规模) 就将原问题转化为了其子问题;
  • 公式化:公式化的关键在于对问题进行数学抽象,然后转换为数学语言。

0. 动态规划算法的设计思路

  • 首先设计穷举搜索
  • 用制表的方法对穷举搜索(一维表的表长,二维表的 N*N,即包含穷举的含义)进行优化(避免重复计算,可能出现的重复计算项,直接在表中的读取,O(1) 时间)
    • 表可能是一维的(数组),也可能是二维的(二维数组);
    • 至于是一维的,还是二维的,依题意(接口而定)而定;
      • 斐波那契显然是一维的,而对于像(学期,先修课),二者之间的关系,则需要用到二维表;

1. 递归式展开

  • X ⇒ X + YF
  • Y ⇒ FX - Y

初始为 FX,都是字符形式,包括 +/-,都是有特定含义的字符,如我们要求其展开 n 次后的字符串的长度;

  • xlen(n) ⇒ xlen(n-1) + ylen(n-1)+2 (末尾的 2 表示的是 +F
  • ylen(n) ⇒ xlen(n-1) + ylen(n-1)+2(末尾的 2 表示的是 -F

因此 xlen(n) 其实与ylen(n) 大小是一致的,进一步可转化为如下递归式:

  • len(n) = 2len(n-1) + 2

动态规划的关键 —— 子问题 公式化相关推荐

  1. 解密动态规划:从子问题到最优解的奇妙算法

    目录 引言: 一. 动态规划的基本思想 二. 问题分析与状态定义 三. 状态转移方程的建立 四. 自底向上的求解过程 五. 优化与进阶技巧 六. 实际应用案例 结论: 引言: 动态规划(Dynamic ...

  2. 递推与储存,是动态规划的关键

    小智最近由于项目需要,经常要接触到一些规划类的问题.那今天就给大家讲一讲旅行商问题及其解法吧. 旅行商问题,即TSP问题(Travelling Salesman Problem).问题是,有一个旅行商 ...

  3. 动态规划-独特的子字符串存在于Wraparound String总个数 Unique Substrings in Wraparound String...

    2018-09-01 22:50:59 问题描述: 问题求解: 如果单纯的遍历判断,那么如何去重保证unique是一个很困难的事情,事实上最初我就困在了这个点上. 后来发现是一个动态规划的问题,可以将 ...

  4. js中的关键子in的使用方法

    https://blog.csdn.net/jvid_sky/article/details/54967359 转载于:https://www.cnblogs.com/zhangchs/p/95784 ...

  5. 一文学会动态规划解题技巧

    前言 动态规划(dynamic programming,简称 dp)是工程中非常重要的解决问题的思想,从我们在工程中地图软件上应用的最短路径问题,再在生活中的在淘宝上如何凑单以便利用满减券来最大程度地 ...

  6. NOIP竞赛学习整理--动态规划算法举例P1264

    动态规划 什么是动态规划? 动态规划是解决多阶段决策最优化问题的一种思想方法.所谓"动态",指的是在问题的多阶段决策中,按某一顺序,根据每一步所选决策的不同,将随即引起状态的转移, ...

  7. 7-1 矩阵链相乘问题 (20 分)(思路+详解+题目解析) 动态规划做法

    一:题目: 输入样例: 在这里给出一组输入.例如: 5 30 35 15 5 10 20 输出样例: 在这里给出相应的输出.例如: 11875 二:基本解析 1.基本的动态规划知识: 1):求解过程是 ...

  8. 【数据结构与算法】【算法思想】动态规划

    贪心算法 回溯算法 分治算法 动态规划 贪心:一条路走到黑,就一次机会,只能哪边看着顺眼走哪边 回溯:一条路走到黑,无数次重来的机会,还怕我走不出来 (Snapshot View) 动态规划:拥有上帝 ...

  9. [Leetcode][第337题][JAVA][打家劫舍3][递归][动态规划]

    [问题描述][中等] [解答思路] 1. 动态规划 第 1 步:状态定义 dp[node][j] :这里 node 表示一个结点,以 node 为根结点的树,并且规定了 node 是否偷取能够获得的最 ...

最新文章

  1. 嵌入式学习:存储器总结
  2. 计算机网络- ARP(地址解析协议)
  3. Hadoop入门进阶步步高(一)-环境准备
  4. 怎样让你的安卓手机瞬间变Firefox os 畅玩firefox os 应用
  5. 一文了解OOM及解决方案,你还看不明白?
  6. “约见”面试官系列之常见面试题之第八十三篇之node.js理解(建议收藏)
  7. 廖雪峰JS教程学习记录----Map和Set
  8. JavaWeb【Velocity】
  9. jQuery form插件使用详解
  10. 搜索引擎的博客提交入口
  11. 看猫解析专用可对接JSON解析弹幕播放器-所有后台功能一键管理
  12. Groovy+Spock单元测试
  13. 谢霆锋断言暂不再婚 赞张柏芝教子有方
  14. 使用craco对cra项目进行构建优化
  15. word里面的ctrl+z快捷键无效|ctrl+z 无效 最新解决方法
  16. P3373(线段树2)
  17. 大学生上课为什么一定要认真听讲?
  18. python—networkx:画随机几何图,找出中心节点并按路径长度染色
  19. windows虚拟桌面_在Windows中使用虚拟桌面的最佳免费程序
  20. 第三届长沙 · 中国 1024 程序员节:共迎算力新时代,开源新未来

热门文章

  1. Spark编写UDF函数案例
  2. Redis 的 应用问题
  3. matlab zxing ean13,【zxing】Ean13 Contents do not pass checksum
  4. mysql 5.6 升级问题_mysql5.6升级5.7带来的问题
  5. 剑指offer面试题24. 反转链表(双指针)
  6. Ubuntu16.04安装boost库
  7. C++控制CPU核的使用
  8. java jtextfield 密码_Java Swing实战(三)文本组件JTextField和密码组件JPasswordField
  9. 渲染进行调用_UE渲染师Dyomin:做次世代手游,可以用好这项技能
  10. python基础操作---string