【发布时间】:2012-03-14 19:31:26
【问题描述】:
给定任意文本字符串,任务是将文本分组到模板的不同部分。每个部分都有不同的最小长度和最大长度参数。只要解决方案在这些范围内,就可以认为该解决方案对于某个部分是最佳的。贪婪的解决方案可能会导致某些部分未达到其最小值,这意味着整个解决方案是不可接受的。
我无法有效地构建算法来执行此操作。似乎动态编程方法可能会有所帮助,但到目前为止,我还无法用动态编程术语来描述它。有没有人有解决这个问题的线索?
function groupText(str, template)
Inputs:
str: a string of text
template: array of JavaScript objects.
One object per section that describes the min/max amount of text allowed
Output:
array: each element corresponds to one section.
The value of the element is the text that is in the section.
例如,让我们定义一个字符串 str,它等于“这是一个测试”。我们还有一个模板t。 t 由几个部分组成。每个部分 s 都有允许的最小和最大字符数。假设这个例子只有两个部分:s1 和 s2。 s1 最少 1 个字符,最多 100 个字符。s2 最少 10 个字符,最多 15 个字符。我们传递我们的字符串 str em> 和我们的模板 t 到一个函数 groupText。 groupText 必须返回一个数组,每个元素 i 对应一个部分。例如,元素 0 将对应于 s1。元素的值将是已分配给该部分的文本。
在这个例子中,一个解决方案可能是。
s1text = "这个"
s2text = "是一个测试。"
【问题讨论】:
-
您想要做的一个示例将帮助我们更好地理解您的问题。尤其是输入和期望输出的示例。
-
这听起来像是一个线性规划问题。
-
@HighPerformanceMark - 我添加了一个示例。让我知道这是否有帮助。感谢您的反馈。
-
这不是一个例子,它是对原始问题的一种伪代码重述。
-
@mdkess - 感谢您的提示。我对线性规划不太熟悉,但我会拿出我的 CLRS 副本,看看我能找到什么。
标签: javascript algorithm coffeescript dynamic-programming