leetcode-动态规划-Java
青阳大师兄
这个作者很懒,什么都没留下…
展开
-
凑零钱问题
给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 解: 由于所需硬币数是不确定的,而且组合数也不定,所以需要穷举所有的组合。在这题中,硬币数是不定的,可以作为自变量n,硬币数n和总金额amount的对应关系为: f(n) = amount f(n)的最优解使用动态规划的最优子结构可以构造为f(n) = f(n-1) + coins[i],即找出n-1个硬币组合的最小值,也就是剩余金额的最原创 2021-01-10 11:16:40 · 355 阅读 · 3 评论 -
斐波那契数求解
** 斐波那契数求解 ** 斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n > 1 给你 n ,请计算 F(n) 。 使用动态规划方法的两种解法。 第一种,备忘录:使用数组存放每个子问题的解(从0到n) Java class Solution { public int fib(int n) {原创 2021-01-08 23:51:09 · 247 阅读 · 2 评论