我有一堆按钮,每个按钮属于某个组,我想将它们打包成一个尽可能少占用空间的网格。
知道这有点像装箱,但有点不同,不是吗?
例如,我有三个组,A,B和C.组A包含17个项目,组B包含7个项目,组C包含8个项目。一个好的输出就是
┌───┬───┬───┬───┬───┰───┬───┬───┐
│ A │ A │ A │ A │ A ┃ B │ B │ B │
├───┼───┼───┼───╆━━━╃───┼───┼───┤
│ A │ A │ A │ A ┃ B │ B │ B │ B │
├───┼───┼───┼───╊━━━┿━━━┿━━━┿━━━┥
│ A │ A │ A │ A ┃ C │ C │ C │ C │
├───┼───┼───┼───╂───┼───┼───┼───┤
│ A │ A │ A │ A ┃ C │ C │ C │ C │
└───┴───┴───┴───┸───┴───┴───┴───┘
它不必是方形的,事实上它更喜欢它更喜欢横向矩形。
以下是另一个例子:A,B,C和D四组.A组有7项,B有3项,C有1项,D有5项。我希望的可能输出是:
┌───┬───┬───┬───┐
│ A │ A │ A │ A │
├───┼───┼───╆━━━┥
│ A │ A │ A ┃ D │
┝━━━┿━━━┿━━━╋━━━┥
│ C │ C │ C ┃ B │
├───┼───╆━━━╃───┤
│ C │ C ┃ B │ B │
└───┴───┸───┴───┘