自动对齐表

时间:2016-06-21 13:43:05

标签: algorithm sorting matrix

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

需要进行排序的元素应保持水平位置/对齐

像这样: [enter image description here

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

1 个答案:

答案 0 :(得分:1)

澄清一下:我认为你的意思是每个项目必须适合一行,只有一行(它不能分成下一行),但它们可以水平移动。

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

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

这将(相对)快速完成(介于O(nlogn)和O(n ^ 2)之间,取决于启发式“快捷方式”)但是留下了超过必要的漏洞,否则会出现非最佳解决方案。

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