使用递归的文本扭曲游戏
Text Twist game using recursion
我正在编写一个在C++中使用递归的文本扭曲游戏。首先,我有一个Trie类(包含一个TrieNode类)可供使用。我的程序首先从字典中加载单词并将它们存储在 Trie 对象中。然后它将提示用户输入一个 7 个字母的单词。阅读完所有字母后,我需要使用递归来查找加载字典(Trie)中单词的所有可能字母组合。然后将这些可能的单词存储在另一个 Trie 中,并在以后打印出来。每个可能的单词必须至少有 3 个字母长,并且必须在字典中。
我卡在需要编写递归函数来搜索单词的地方,因为不知何故,我看不到在这种情况下如何应用递归。有人可以给我一个提示吗?我不需要全面的代码;我只需要有人为我点亮那个小灯泡,这样我就会知道从哪里开始。多谢!
附言我也对回溯和 8-Queen 问题进行了研究,但我仍然感到困惑......
这是我的主要程序:
void findWord(int i, const string &word, const Trie&lexion){
//My question is, what should the base case be?
//I'm a bit clueless: if I start with this:
//if(word.length()<=1){
// return true;
// }
// else{
// return findWord(i,word.substr(1,word.length()),lexion);
// }
//I know this doesn't make sense; but I'm really lost and don't know where to start.
}
void main(){
string word;
Trie lexion = Trie();
lexion.loadFromFile("ospd.txt");
word = getWord();//get word from the user
for (size_t i = 3; i <= 7; i++){
findWord(i,word,lexion);
}
}
基本上,
你想把问题分成"我可以做一个以这个字母开头的单词吗?"然后递归下降Trie来解决"如果我从这个字母开始,我可以使用这些字母的其余部分的子集在这个节点上创建一个单词吗?",然后将结果转换为更大问题的结果, "从这个trie的根开始,我能从这个字符串中发出什么词?"
你的递归函数应该接受一个字母列表(或向量)和一个对TrieNode的引用,并应该返回使用该TrieNode作为根存在的可能单词的列表。
终止条件是到达叶节点,其中返回一个包含单个空字符串的列表,这表示您找到了一个单词。递归部分是遍历单词中所有剩余的字母,看看其中是否有任何字母可以成为单词的一部分,并递归地检查每个字母(对不起,这真的很难正确措辞......
一些伪代码:
list recursiveFind(list input, node curNode)
if curNode has no children
// we found a word!
return list containing ("") (so the caller knows we found a result instead of failing)
else
results = empty list
foreach letter in list
if find a node where value == letter
recursive_results = recursiveFind(input except for that letter, that node you just found)
foreach result in recursive_results
push (letter + result) into results
return results
我希望这有帮助!
相关文章:
- 在为我的基于文本的 RPG 游戏制作库存时遇到困难
- 文本冒险游戏 - 如何区分一种项目类型与另一种项目类型以及如何构建项目类/子类
- 在程序和基于文本的游戏和C++内重新启动程序
- 在程序/基于文本的游戏/C++内重新启动程序
- 在基于文本的游戏中,如何将对象放置在房间内?
- 如何更新基于文本的游戏的帧
- 升级基于文本游戏的库存中的删除功能
- C++ 确定类是否可以使用对象 - 文本 RPG 游戏
- Visual C 文本游戏自定义时钟系统
- 我简单的 c++ 文本游戏不起作用。我正在使用随机数生成,我很困惑
- 基于文本的角色扮演游戏拖放和保留物品功能
- 变量的值在使用C++的简单文本 RPG 游戏中不会更改
- C++32767基于文本的游戏
- SFML 2.1 / C++在游戏中接受用户文本
- 问答游戏/单击按钮将文本添加到标签
- 在矢量中存储结构信息(文本 RPG 游戏)
- 使用递归的文本扭曲游戏
- 基于文本的游戏中出现未处理的异常
- 为什么在文本冒险游戏中使用树数据结构来表示数据
- 如何在C++和DirectX 9中为游戏创建文本框