【问题标题】:Auto align elements in table自动对齐表格中的元素
【发布时间】:2016-06-21 13:43:05
【问题描述】:

我需要制定一个算法,通过使用尽可能少的行数来对齐表格中的元素。

需要蜜蜂排序的元素应该保持水平位置/对齐

像这样: [

我希望有人已经这样做了。 谢谢!

【问题讨论】:

  • 蓝色条纹 14 是从哪里来的?它在“输入数据”中不存在。
  • @fail,误删,秒修复
  • 您的示例显示所有彩色条纹保留其水平位置,仅垂直移动。这太特别了,这不是一个纯粹的巧合,而是一个要求。如果有,请明确说明;否则显示至少有一些条纹违反明显规则的示例,即水平移动(例如,将红色 12 条纹在“输入”表中向右移动几个单元格)。
  • @CiaPan 你说得对,这只是一个例子。我只需要一种算法来将元素定位到顶部,同时保留更少的可用空间。

标签: algorithm sorting matrix


【解决方案1】:

澄清一下:我假设您的意思是每个项目必须放在一行上,并且只能放在一行上(它不能分成下一行),但它们可以水平移动。

启发式/天真地,我会这样做:

  • 按长度对元素进行排序。
  • 尝试通过简单地挑选(从最长到最短)项目来填充第一个空闲行,直到该行已满或找不到更多匹配元素。
  • 重复直到完成所有元素。

这将(相对)快速完成(介于 O(nlogn) 和 O(n^2) 之间,具体取决于启发式“捷径”),但会留下比必要更多的漏洞,并出现其他非最佳解决方案。

我打赌这个问题等同于经典的 NP 完全问题之一https://en.wikipedia.org/wiki/Karp%27s_21_NP-complete_problems,因此您可能找不到一个好的实用的非启发式解决方案。

【讨论】:

    猜你喜欢
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多