问题陈述:
给定四个单词,将它们放在m×n方格网格内,使网格区域尽可能小。
单词必须在网格内从左到右,从上到下运行。字母可能重叠,但不能形成其他字。所有单词都必须在一个巨链中相互链接。
可以用4个单词“一,二,三和四”形成的示例网格。请注意,最后一个网格是最优化的。
我正在尝试学习python,我认为这将是一个很好的应用程序,我的牙齿。
任何想法如何构建我的数据和算法来解决这样的问题?我不是在寻找一个直接的答案,但有些提示如下:
使用此库,此类或此数据结构。或者通过可用空间这样迭代。
答案 0 :(得分:2)
考虑一下您需要的最大网格大小是多少?如果字词为one
,two
,three
,four
,那么最大尺寸网格将为
12 x 12.这是网格的大小,每个单词都是端对端放置,共享前一个单词的最后一个字母。
现在我们有了空间。你如何适应空间中的文字?试着想一下蛮力方法。那会带来什么?
尝试迭代所有可能的模式组合。您可以将每个单词放置24个方法,并且有4个单词,因此您有~500,000个组合,这对于现代计算机来说并不是很多。查看哪些模式实际满足标准(字母匹配等)。
一旦你有蛮力方法,你怎么能改进它?
就数据结构而言,您实际上只需要一个可以存储字符的网格。您可以使用嵌套列表结构,numpy数组,pandas或许多其他东西。首先尝试解决问题,然后再进行改进。