本文整理汇总了C++中trie::match方法的典型用法代码示例。如果您正苦于以下问题:C++ trie::match方法的具体用法?C++ trie::match怎么用?C++ trie::match使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类trie
的用法示例。
在下文中一共展示了trie::match方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: generate
void generate(string s, int val)
{
queue<string> q;
int i, h, pai, filho;
if(m.count(s) == 0)
{
m[s] = m.size() - 1;
q.push(s);
}
pai = m[s];
tam[pai] = val;
while(!q.empty())
{
s = q.front();
pai = m[s];
q.pop();
if(tam[pai] > resp) continue;
query.clear();
t.match(s, 0);
for(i=0;i<query.size();i++)
{
if(!sufix(s, query[i])) continue;
if(m.count(sufstr) == 0)
{
m[sufstr] = m.size() - 1;
filho = m.size() - 1;
q.push(sufstr);
}
else filho = m[sufstr];
tam[filho] = tam[pai] + sufdis;
grafo[pai].push_back(filho);
peso[pai].push_back(sufdis);
}
}
}
示例2: main
int main()
{
int N, i, j, k;
vector<string> init;
vector<int> start;
string str;
char s[100];
while(scanf("%d", &N) != EOF && N)
{
v.clear();
init.clear();
start.clear();
t.children.clear();
for(i=0;i<m.size();i++)
{
grafo[i].clear();
peso[i].clear();
tam[i] = INF;
}
m.clear();
m[""] = 0;
for(i=0;i<N;i++)
{
scanf("%s", s);
t.insert(s, 0);
v.push_back(s);
}
for(i=0;i<v.size();i++)
{
query.clear();
t.match(v[i], 0);
for(j=0;j<query.size();j++) if(query[j] != v[i])
{
if(!sufix(v[i], query[j])) continue;
init.push_back(sufstr);
start.push_back(max(v[i].size(), query[j].size()));
}
}
resp = INF;
for(i=0;i<init.size();i++) if(start[i] < resp) resp = min(resp, shortest_path(init[i], start[i]));
if(resp == INF) printf("-1\n");
else printf("%d\n", resp);
}
return 0;
}