最近看到一篇毕业论文,作者把要感谢的人名(单词)排列得跟填字游戏似的,很有意思(如下图)。大家讨论一下该怎么用程序自动生成。下面更严谨地描述这个问题,供参考:
任意给定n个单词,把它像填字游戏那样排在在一张格子纸上,要求:
1、每个字母占一个格子,每个格子里最多有一个字母(不能重叠)
2、单词可以横排,也可以竖排。如果横排,单词之间左右间距至少一个空格;如果竖排,单词之间上下间距至少一个空格(不能斜着排,不能太挤)
3、排列后,包围它的最小长方形宽度小于W,高度小于H(纸的大小受限制)
4、被重复利用的字母数尽可能多