知识屋:更实用的电脑技术知识网站
所在位置:首页 > 编程技术 > PHP编程

Phone List(HDOJ-1671)(tire树)

发布时间:2015-05-27 19:17:37作者:知识屋

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

 

#include#include#include#includeusing 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;inext[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

 

(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜