摘要:
使用一个二维数组dp[i][j],表示将第一个字符串到位置i为止,和第二个字符串到位置j为止,最多需要几步编辑。 阅读全文
摘要:
遍历一次数组,在每个位置i时,记录i位置之前所有价格中的最低价格,然后将当前价格作为售出价格,查看当前收益是不是最大收益即可。 阅读全文
摘要:
还是动态规划,这里需要乘除法来计算位置,因为粘贴操作是位数增加的。我们使用一个一维数组dp,其中位置i表示延展到长度i的最少操作次数。 阅读全文
摘要:
本文我们了解到打印数组如何避免打印默认的[Ljava.lang.Object;而打印有意义的信息。 阅读全文
摘要:
每个硬币可以用无限多次,所以是完全背包问题。dp[i]表示,达到总金额i所需的最少硬币数,因为求最少硬币数所以先将dp初始化为amount+2,状态转移方程为:dp[i] = min(dp[i], dp[i-coin] + 1) 阅读全文
摘要:
这道题也是一个背包问题,背包问题:有N个物品和容量为W的背包,每个物品都有自己的体积w和价值v,求拿哪些物品可以使得背包所装下物品的总价值最大。如果限定每种物品只能选择0个或1个,则问题称为0-1背包问题; 阅读全文
摘要:
设所有数字和为sum,我们的目标是选取一个子数组,使它的总和为sum/2,定义二维boolean数组dp[i][j],其意义是使用前i个数字的和能不能构成整数j。 阅读全文
摘要:
本文中我们了解了如何使用java.util.Arrays类创建、搜索、排序和转换数组的一些方法。 阅读全文
摘要:
本文中,我们介绍了Java中数组的基本和一些高级用法。 阅读全文
摘要:
使用动态规划来解决本题,定义一个二维数组dp,其中dp[i][j]表示到第一个字符串位置i为止、到第二个字符串位置j为止、最长的公共子序列长度。这样一来我们就可以很方便地分情况讨论这两个位置对应的字母相同中与不同的情况了。 阅读全文