设计一种不同类型的标签云

ani*_*son 10 html css php tags knapsack-problem

我希望我的所有标签都具有相同的大小,而不是拥有一堆不同大小的链接.但是,我的目标是最大限度地减少制作云所需的空间,同时尽量减少使用的线路数量.

举个例子:

例

看起来像任何普通的标签云.然而,看看'roughdiamond'标签周围的所有额外空间,可以通过其他标签填充,例如靠近底部的"石头",这可以有效地消除云中的整个额外线.

在开始新线之前,我该怎么做才能填写上面可能的空格?我不是在谈论重新组织它们以找到所需的绝对最小行数.如果我正在查看图片中的列表,'pendant','howlite'和'igrice'会在第1行填充它,'roughdiamond'会转到第2行,因为第1行已满,'碧玺'会转到第3行,因为它不能适合第1或第2行,与"emberald"相同,但是'pearl'会进入第2行,因为它有适合那里的空间.我认为在CSS中可能会有一些方法可以简单地使链接折叠到它可以容纳的任何可填充空间中.

Tre*_*ner 6

我怀疑这在CSS中是可行的,因为这需要特定的计算来最佳地重新排列单词.

您实际需要解决的问题是二维垃圾箱包装问题,其中包含相同尺寸的垃圾箱和可变尺寸的物品.

正如在关于箱子打包的问题的答案中所提到的,将物品从大到小排序然后在较大的物品之间拟合较小的单词通常会产生相当好的近似值.您将不得不尝试使用您将使用的单词类型来确定这是否适合您(他的方法可能会导致在云的底部分组许多小词).