在受约束的4列报纸网格中将图像放在故事旁边的算法

时间:2012-06-27 15:33:48

标签: algorithm layout printing bin-packing

这个问题是关于任何有助于在受限和明确定义的网格内“靠近”故事布局图像的代码或指针。

这些是基础知识和输入:

  • 整个物体被称为报纸。它有一套故事(文字长度各不相同)
  • 每个故事都可以有一个与之关联的图像,或者不是
  • 报纸自动排列成4列。文本从左上角到右下角,每列向下流动
  • 图像可放置在固定位置 - 左上,上中,右上,左中,中,右中,左下,中下,右下
  • 放置图像时,它可以跨越1到3列。根据设定的跨度自动调整高度以适合比例。
  • 所有实际的布局工作(以及在文本中流动的图像)都已完成 - 算法所需要的只是决策

整体问题是以有趣的方式将故事放置在固定布局中,使得图片靠近与其相关的故事,并且还展示了有趣的位置和跨度变化,从而使得打印的阅读体验变得有趣并且美观。

这是算法所需的工作:

  • 当一个有图片的故事被放入报纸时,至少 图片的一个边缘必须触及与之相关的故事。
  • 我们需要决定是否重新排序故事,以便图像密度在一个区域内不会过于偏向,例如前4页有很多图片,报纸的其余部分只是文字。
  • 如果我们选择重新排序并重新排序故事,那么解决此展示位置问题的最佳方法是什么?

一般来说,我不确定这是否属于垃圾箱包装问题 - 从某种意义上说,可以重新排序故事以最小化白色空间;因为我们需要将图像放在“靠近”故事的位置。

有关如何解决此问题的任何指示,或者有助于解决类似问题的代码,我们表示赞赏。

1 个答案:

答案 0 :(得分:0)

让我们说故事的排序将使这些故事文本按列顺序一个接一个地出现。如果故事有图片,则图片可以在故事文本的上方/下方/左侧或右侧

  1. 生成所有可能的故事和图片订单
  2. 如果任何图片位置不合适,则丢弃该订单(不能位于最左侧列的左侧,或者如果放置在指定的位置,则图片不会在允许的位置之一处结束)。< / LI>

    您将获得一组符合展示位置规则的可能的故事/图片订单。然后,您可以将它们显示为缩略图,并让子编辑选择最佳。