Heim > php教程 > php手册 > Phone List(HDOJ-1671)(tire树)

Phone List(HDOJ-1671)(tire树)

WBOY
Freigeben: 2016-06-13 09:05:03
Original
1099 Leute haben es durchsucht

Phone List(HDOJ-1671)(tire树)

正解是字典树,运用链表实现的一种数据结构,构建 方式和紫书上的二叉树差不多。因为这道题的内存给的比较紧,所以需要解决内存问题,但是如果递归释放内存会导致效率低下,解决方案是开一个内存池(数组),每次更新下标就可以重复利用了。

 

#include<cstdio>
#include<cstring>
#include<iostream>
#include
using namespace std;
int T,n,k;
struct pa{
    char s[15];
    int len;
};
bool cmp(pa a,pa b){
    return a.len>b.len;
}
struct trie{
    trie *next[15];
};
trie *root;
trie all_trie[1000000];
bool built(char *s,int len) {
    bool ok = true;
    trie *p = root, *q;
    for(int i=0;i<len;i++){ id="s[i]-'0';" int="" p-="">next[id]==NULL) {
            ok = false;
            q = &all_trie[k++];
            for(int j=0;j<10;j++) q->next[j] = NULL;
            p->next[id] = q;
            p = p->next[id];
        }
        else {
            p = p->next[id];
        }
    }
    return ok;
}
int main(){
    scanf("%d",&T);
    while(T--){
        scanf("%d",&n);
        pa s[10005];
        k = 0;
        bool ok = true;
        root = &all_trie[k++];
        for(int i=0;i<10;i++) root->next[i] = NULL;
        for(int i=0;i<n;i++){ .len="strlen(s[i].s);" else="" i="0;i<n;i++)" int="" ok="false;" pre="" return=""><p> </p></n;i++){></len;i++){></algorithm></iostream></cstring></cstdio>
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage