我正在开发一个Web应用程序,其中包含大量的名称列表。客户最初希望按字母将名称拆分为
,以便轻松地跳转到列表上的特定名称。
现在,查看列表时,客户指出有几个字母只与一个或两个名称相关联。如果每个名称中只有少数名称,他现在想知道我们是否可以合并连续的几个字母。
(请注意,没有名称的字母根本不显示。)
我现在所做的是让数据库服务器返回一个已排序的列表,然后保留一个包含当前字符的变量。我遍历名称列表,递增字符,并在到达每个字母时打印开放和关闭的
现在,查看列表时,客户指出有几个字母只与一个或两个名称相关联。如果每个名称中只有少数名称,他现在想知道我们是否可以合并连续的几个字母。
(请注意,没有名称的字母根本不显示。)
我现在所做的是让数据库服务器返回一个已排序的列表,然后保留一个包含当前字符的变量。我遍历名称列表,递增字符,并在到达每个字母时打印开放和关闭的
和
- 标记。我知道如何调整此代码以组合一些字母,但我不确定如何处理特定字母组合是否为最佳可能的组合。换句话说,假设我有:
A-12个名称 B-2个名称 C - 1个名称 D - 1个名称 E-1个名称 F-23个名称
我知道如何得到一个A-C组合,然后单独有D。我正在寻找的是实现A应该单独存在,然后B-D应该在一起的高效方法。
我真的不确定从哪里开始寻找。
如果有任何区别的话,这段代码将用于Kohana Framework模块。
更新2012-04-04:
这是我需要的澄清:
假设我希望每个组中的最小项目数为30。现在假设字母A有25项,字母B、C和D每个有10项,字母E有32项。我想保留A,因为合并B+C+D将更好。将它们简单地组合起来是A+B、C+D+E-这不是我想要的。
换句话说,我需要最接近每组最小值的最佳匹配。