我用C ++编写了一个单词搜索算法,运行速度快,
但是我注意到它里面有一个错误。
错误:
当在一个包含两个正确位置的位置时单词,其中一个单词被跳过。
例如:
4x4
T S E T
O O O E
O O O X
O O O T T
我知道如何解决这个问题,但是当我这样做时,它只会解决问题。
设计:
current;
int main():
For every letter:
searchWords(letter, word);
if(current.successful) doStuff();
current.resetMembers();
void searchWords(params):
For every word:
if(letter == word[0]):
current.addLetter(letter);
For every 8 directions (top left, top, top right etc.):
If letterAtPos(letter + direction) == word[1]:
current.addLetter(letterAtPos(letter + direction));
if(dirSearch(word, direction, letter)) return;
bool dirSearch(params):
For pos = 2; pos < word.length(); pos++:
if letterAtPos(letter + direction * pos) != word[pos]:
current.resetMembers();
return false;
else
current.add(letterAtPos(letter + direction * pos));
很抱歉像python这样的代码,但它比我的意大利面条代码here
更干净注意:pastebin需要进行一些调整才能正常工作,但应该可以正常使用。