2011-02-24 37 views
0

我正在做一個遊戲項目,在這個項目中,我們必須動態地用給定的一組字母形成單詞...給定的一組字母可能包含重複也..形成我們可以使用給定字母集的任意次數的字母(比如兩次或三次)...幫助我使用算法從給定集合中形成所有可能的有意義字詞形成從一個字母在java中的文字

謝謝大家

+1

[Efficent word scramble algorithm]可能的重複(http://stackoverflow.com/questions/784303/efficent-word-scramble-algorithm) – 2011-02-24 06:00:49

+0

我不這麼認爲 - 這個問題與最大化單詞有關在一個特定的順序 - 這個問題更多地關於在拼字遊戲作弊 – 2011-02-24 06:02:34

+0

找到你的集合的子集和所有子集的排列,並與字典匹配... – st0le 2011-02-24 06:03:59

回答

0

簡單的方法是創建每個可能的字母順序,然後將它們中的每一個與您的字典進行比較。

您可以通過將字典存儲在便於快速查找的數據結構中來細化它。 (哈希表,樹等)我一直有意爲實現一個28-ary樹快速字典單詞訪問,但還沒有得到它。

0

我爲許多月前的填字遊戲求解器做了類似的事情。我基本上採取了一個字典文件,並修改它,所以它看起來像:

aardvark:aaadkrr 
albatross:aablorsst 

然後,對於給定的信,我可以對它們進行排序,並使用類似:

grep ':{sorted letters}$' mywords.txt | sed 's/:.*$//' 

這將給我候選人的話。

如果你正在尋找可以使用少於整個集合的單詞,但是你給出的算法非常有效,那麼你將不得不包裝一些排列/組合代碼。

對於Java,我會考慮任何維護哈希表的內存(假設你有空間),或使用外部數據庫,在那裏查找鍵排序varaiations,當然允許的副本,因爲porerope既能來自eorp

雖然我的grep爲基礎的解決方案適合我自己的目的,但您可能不希望在強大的應用程序中依賴外部工具和子流程。

相關問題