完全公开这是针对算法课的作业,但我不是在找人为我编写任何代码或握住我的手。无论如何,我们必须做 Boggle 游戏。对于那些不知道的人,基本上你会得到一个 Boggle 板并且必须找到尽可能多的单词,考虑到递归的字符串可能性,这可能需要大量时间。
为了减少 OP 时间,我们被鼓励使用我们想尝试的任何算法,并在我们进行过程中“清除”字符串。目前我有一个系统,可以通过将它们存储在字典中来找到所有可能的 3 个字母后缀,如果字符串有 3 个字母但不匹配任何有效的后缀,则停止递归。
进入问题的症结所在,我正在尝试实现 Radix 后缀树,目前它看起来像这样
public static class BoggleRadix
{
private Node root;
public BoggleRadix()
{
}
public class Node
{
public Node()
{
List<Edge> nodeEdges = new List<Edge>()
{
}
}
}
public class Edge
{
public String edgeString;
public Node edgeNode;
public Edge()
{
}
public Edge(String s, Edge e)
{
this.edgeString = s;
this.edgeNode = e;
}
}
}
所以我将指针存储在一个无序列表中,这意味着如果我正在检查后缀,我可以预期,更糟糕的情况是,26 次操作甚至可以找到我需要继续沿着树向下的后缀指针。
有什么方法可以加快插入速度,简化流程吗?是否值得为每个节点在内存中建立一个小字典来检查后缀的第一个字母是否存在?这么小就无所谓了吗?