gpt4 book ai didi

c++ - Trie map 实现

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:11:35 24 4
gpt4 key购买 nike

我今天正在解决一个问题。但是我被卡住了。我知道 trie 是如何工作的,但问题是我知道如何使用静态数组和类来实现它。今天在网上冲浪,我读到有一种方法可以使用 STL::map 来实现尝试。我今天试过了,但我仍然不知道如何在 int 上插入元素。这种结构。

Edit1:我正在尝试解决这个问题:spoj.com/problems/TAP2012D我想知道如何将单词添加到 trie 中edit2:我知道 map 是如何工作的,我只是不知道带有 map 的特里树是如何工作的。我想要知道尝试的人。

这是我到目前为止所做的

const int ALPH_SIZE = 26;
using namespace std;

struct trie{
map<char,int> M;
int x,y;
trie();
};

trie T[1000000];


trie::trie()
{
x=y=0;
}
int maximo;


void addtrie(string palabra)
{
int tam=palabra.size();
int pos=0;
for(int i=0;i<tam;i++)
{
if(T[pos].M.find(palabra[i])==T[pos].M.end())
{
T[pos].M[palabra[i]]=new trie();
T[pos].M[palabra[i]]=
}

}

}

最佳答案

trie 节点存储现有字符的映射和指示该节点是否对应于 trie 中的单词的标志。

struct Node
{ map<char, Node*> a;
bool flag;

Node() { flag = false; }
};

现在插入类似于您对静态数组执行的操作,只是您在这里使用的是映射。

void insert(Node *x, string s)
{ for(int i = 0; i < s.size(); i++)
{ if(x->a.count(s[i]) == 0)
/* no outgoing edge with label = s[i] so make one */
{ x->a[ s[i] ] = new Node;
}
x = x->a[ s[i] ];
}
x->flag = true; /* new word */
}

关于c++ - Trie map 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14887433/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com