面向初学者的动态编程–如何通过记忆化和制表法解决编码难题

2020年12月30日10:50:46 发表评论 34 次浏览

动态编程是一种编码风格, 你可以在算法运行时将其结果存储在数据结构中。

了解动态编程可以帮助你更快地解决复杂的编程问题。

这些方法可以帮助你解决有关数据结构和算法的面试问题。他们也可以改善你的日常编码。

我们在notlogy.org YouTube频道上发布了有关动态编程的5小时课程。

Alvin Zablan开发了此课程。 Alvin是Coderbyte的经验丰富的编程讲师, Coderbyte是一个受欢迎的网站, 提供技术面试准备和编码挑战。

在本课程中, 你将学习使用动态编程策略来解决编程难题, 例如:

  • 计算斐波那契数列的第40个数。
  • 计算通过6x9网格移动的不同方式的数量。
  • 给定一组硬币, 最少的硬币数目怎么能赚27美分。

本课程使用图像和动画来帮助你可视化问题和重要概念。从概念上理解问题之后, 你将学习如何使用动态编程在JavaScript中解决问题。

即使本课程使用JavaScript, 你仍将学习可应用于其他编程语言(包括Python)的概念和知识。

面向初学者的动态编程–如何通过记忆化和制表法解决编码难题1

动态编程可以真正加快你的工作。但是常识可以使事情进一步加速。 (旅行推销员问题通过网络

XKCD

)

本课程涵盖的动态编程方法

本课程的第一部分着重于记忆方法。在这里使用递归并存储算法的中间结果。然后, 你可以在以后的循环中访问这些结果。

这是本课程涵盖的记忆策略:

  • fib记忆
  • gridTraveler备忘录
  • 记忆配方
  • canSum记忆
  • howSum记忆
  • bestSum记忆
  • can构造记忆
  • countConstruct记忆
  • all构造记忆

第二部分着眼于制表策略。这些涉及迭代地建立数据表。

这是本课程涵盖的制表策略:

  • 表格
  • gridTraveler列表
  • 列表配方
  • canSum列表
  • 汇总表
  • bestSum列表
  • canConstruct制表
  • countConstruct制表
  • 全部构建列表

你可以观看完整的课程notlogy.org YouTube频道(5小时观看)。

一盏木

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: