我有一个简单的数字树,定义如下:
std::string longest_word (const DTN& dtn) {
std::string lw = dtn.word_to_here;
for(auto s:dtn.children){
if(s.second.is_word && lw.length()<s.second.word_to_here.length()){
lw = longest_word(s.second);
}
longest_word(s.second);
}
return lw;
}
我在定义一个名为longest_word(const DTN&amp; dtn)的函数时遇到问题,该函数假设使用迭代器和递归返回数字树中最长的单词,如下所示:
REST FULL
假设我们在数字树DTN中有三个单词:( ante,anteater,anthebellum),并且调用longest_word(DTN)会给我一个空字符串&#34;&#34;而不是&#34; anthebellum&#34;。有人可以指出我在longest_word函数中做错了什么吗?由于我的英语不好,我会很感激实际的代码,我更容易理解代码。提前致谢。
答案 0 :(得分:1)
longest_word的算法完全错误。你应该检查所有孩子longest_words并返回更长的孩子。在完成儿童循环之前,您无法返回。请注意,您的算法将始终返回第一个孩子。我甚至不明白你为什么要在那里检查一个完整的词......
我可以尝试编写正确的代码,但我觉得它对你没用。我的建议是回到最简单的算法,比如在整数列表中查找最大数字。