您可能已经尝试过了,已经实施了,也许最好再加上另一个答案,等等。但是我还没有看到他们被提及,所以这里是:
通过跟踪发生了什么变化和没有发生什么变化,您可以丢弃很多支票。例如:
On a 5x5 field, A vertical word is found on base of the third column,
All the rows change. However, the first, second, fourth, and fifth,
columns do not change, so you dont need to worry about them (the third did change.)
On a 5x5 field, A 3 letter word is found horizontally on row 2, column 3, to column 5.
So you need to check row 1 and 2 (row 1 because the words on that one
fell down and where replaced), as-well as columns 3, 4, and 5.
或者,以伪代码
// update the board
// and check
if (vertical_word)
{
check(updated_column)
for (i in range 0 to updated_row_base)
check(i)
}
else // horizontal word
{
for (i in range 0 to updated_row)
check(i)
for (i in range 0 to updated_column_start)
check(i)
for (i in range updated_column_end+1 to final_column)
check(i)
}
还有一些琐碎的问题:
您是否设置了编译器速度优化?(如果您使用的是)
可以完全优化您的单词搜索算法吗?以任何方式?