算法:最佳地将较小的字符串组合在一起以制作指定长度的较长字符串?

时间:2016-02-09 19:03:50

标签: string algorithm optimization

一般问题

我有一组短字符串,每个字符串长度不同,最小X>最佳地将这些短串组合在一起以制作长度为M的长串的算法是什么,其中M>> 0。 Y' Optimal将被定义为长度最接近M的长字符串的最大数量。

详情

我正在写一个推文创建者来练习javascript。我有一个问候列表和一个帐户名列表。我希望我的程序创建推文,以便每条推文都有一个问候语,其余的字符用于帐户名称。每条推文的限制为140个字符。

Hello! @person1 @acc2 @mygoodfriend3 ...

当然,每个帐户都有不同数量的字符。我希望通过最佳地选择帐户名称组合,每条推文尽可能多地使用140个字符。

我很确定有一类问题/算法可以解决这个问题,但我记不起来了。

2 个答案:

答案 0 :(得分:0)

这种问题被称为knapsack problem,并且一个确切的(或确切的最佳)解决方案因难以处理而闻名。

然而,有合理的近似求解器,以及“伪多项式时间”动态编程算法。

答案 1 :(得分:0)

我认为这与背包问题有关;这是"多线性装箱问题"的特殊情况。两者都是NP难问题。 Here你可以找到线性bin包装问题的贪婪算法,但是多个案例要困难得多。约束编程语言/库将有助于解决这些问题。