单词搜索算法会跳过单词

时间:2017-08-09 21:23:07

标签: c++ algorithm wordsearch


我用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需要进行一些调整才能正常工作,但应该可以正常使用。

0 个答案:

没有答案