【发布时间】:2014-05-13 16:58:04
【问题描述】:
目标是计算在用户给出的断点处断弦的成本。因此,让我们假设以下内容: String 的长度 = 10 所以 lengthArray = [1,2,3,4,5,6,7,8,9,10] 和 BreakPointArray = [5, 3, 2, 6, 1]。现在我们不必更改用户给出的休息顺序。
我能够找出这个问题的树结构
所以在给定的断点处打破字符串的总成本 = 10+5+5+3+2 = 25 但是我无法提出实施部分。以下是我的方法:
我从BreakPoint = 5开始,把lengthArray分成
leftLength = [1,2,3,4,5]
和
rightLength = [6,7,8,9,10]
在 BreakPoint = 3 处,我检查它是否应该在 leftLength 数组下方,所以我再次将 leftLength 分为 2 部分
leftLength1 = [1, 2,3]
和
rightLength1 = [4,5]
在 BreakPoint = 2 处,位于 leftLength1 之下,因此再次分为 2 部分
leftLength2 = [1,2] 和
rightLength2 = [3]
现在我在 BreakPoint = 6 时卡住了,因为它在上面的 rightLength 之下。有人可以帮助我如何跟踪我所做的所有分区。我怎样才能回到第一个 rightLength 数组来计算 breakPoint 6 的成本。我正在尝试实现这个 Java。
【问题讨论】:
-
我只是在用 Java 实现之前编写伪代码,而当 BreakPoints 是随机的时,我没有进一步了解。如果你愿意,我可以分享
-
你不能只构建一个结果数组的树和每个非叶节点的成本吗?然后应该不难找到包含当前包含元素 6 的数组的节点。
-
我什至不明白你的成本函数和优化目标是什么——你能详细说明一下吗?
-
我还没有达到优化部分,这是计算数组中所有断点的总成本的第一步,它们的顺序也与给定的顺序相同。完成此操作后,我将对用户给出的所有断点组合进行计算,并找出最便宜的组合以及成本
-
如果您只想计算整个过程的成本,只需使用递归并返回每个步骤的成本。如果要返回产生最佳解决方案的配置,可以将其包含在返回值中。
标签: java algorithm dynamic-programming