我们正在开发一个解决 Boggle 游戏的程序,整个程序必须在 0.1 秒内执行。我们通过标准输入将字典插入到我们的代码中(持续 0.05 秒,我们最大时间的一半)。我们使用以下函数将单词添加到字典中,每个单词持续 0.1 秒:
void Node::addWord(const char* word){
const char idx = *word - 'a';
if(!mChildren[idx]) mChildren[idx] = new Node(*word);
if(strlen(word) > 1) mChildren[idx]->addWord(word + 1);
else mChildren[idx]->setMarker(true);
}
void Trie::addDictionary(const vector<string>* aux){
auto length = aux->size();
Node* current = root;
for (size_t i = 0; i < length; i++) {
int len = aux->at(i).length();
if (len >= 3 && len <= DIM*DIM + 1) {
current->addWord(aux->at(i).c_str());
}
}
}
在这种情况下,DIM = 4(是 Boggle 的 NxN 板的维度)并且 aux 是一个向量,其中来自标准输入的所有数据都被转储。我们强加了 len >= 3 的条件,因为我们只想要包含 3 个或更多字母的单词。
有什么想法可以提高这些功能的速度吗?