博文

第一节 序 斐波那契数列 Fibonacci 精通C语言 递归算法和动态规划

  第一节 序 斐波那契数列 Fibonacci 第一节 序 斐波那契数列           Fibonacci 第二节 0 1背包问题   0 1 Knapsack Problem 第三节 编辑距离           edit distance 第四节 子集总和           subset sum 第五节 钢条切割            cut rod 第六节 硬币找零            Coin Change 第七节 最长公共子序列           Longest Common Subsequence 第八节 矩阵链式乘法 Matrix Chain Multiplication 第九节 最优游戏策略 Optimal Strategy for a Game 第十节 最优二叉查找树           Optimal Binary Search Tree 第十一节 最长递增子序列 Longest Increasing Subsequence 动态规划是一种解决复杂问题的方法,它可以将其分解为更简单的子问题,一次解决每个子问题,然后将其解决方案存储在一个数组中(通常)。 现在,每次出现相同的子问题时,都无需使用重新计算其解决方案,而是使用先前计算的解决方案,从而以节省存储空间为代价来节省计算时间。 动态规划可以通过两种方式实现–记忆化,制表。 记忆–记忆使用自上而下的技术来解决问题,即从原始问题开始,然后将其分解为子问题,并以相同的方式解决这些子问题。在这种方法中,假设您已经计算了所有子问题。通常,您会从主要问题中执行递归调用(或某些迭代等效的调用)。您确保递归调用永远不会重新计算子问题,因为您缓存了结果,因此不会重新计算...