我正在做一个游戏项目,我们必须用给定的字母组动态地形成单词...给定的字母组也可能包含重复...同时形成单词我们可以使用给定的字母任意次数的字母集(比如两次或三次)...帮助我使用算法从给定的集合中形成所有可能有意义的单词
谢谢大家
答案 0 :(得分:0)
简单的方法是创建每个可能的字母顺序,然后将它们中的每一个与您的字典进行比较。
通过将字典存储在便于快速查找的数据结构中,您可以稍微改进它。 (哈希表,树等)我一直想实现一个28-ary树来快速字典访问,但还没有解决它。
答案 1 :(得分:0)
我在许多月前为填字游戏解决方案做过类似的事情。我基本上拿了一个字典文件并修改它看起来像:
aardvark:aaadkrr
albatross:aablorsst
然后,对于给定的一组字母,我可以对它们进行排序并使用类似的东西:
grep ':{sorted letters}$' mywords.txt | sed 's/:.*$//'
这会给我候选词。
如果你正在寻找可以使用少于完整集合的单词,你将不得不包围一些排列/组合代码,但给出的算法非常有效。
对于Java,我考虑在内存中维护哈希表(假设你有空间)或使用外部数据库,其中查找键是排序的变量,当然,允许重复,因为pore
和rope
都来自eorp
。
虽然我的基于grep
的解决方案适用于我自己的目的,但您可能不希望在强大的应用程序中依赖外部工具和子流程。