zoukankan      html  css  js  c++  java
  • poj 2001 Trie树

    题意思路简单,直接贴代码

    /*
    * poj2001/win.c
    * Created on: 2011-8-18
    * Author : ben
    */
    #include
    <stdio.h>
    #include
    <stdlib.h>
    #include
    <string.h>
    #include
    <math.h>

    #define MAXN 1005
    #define MAXLEN 25

    int N;
    char strs[MAXN][MAXLEN];

    typedef
    struct Trie {
    int num;
    struct Trie * br[26];
    } Trie;

    Trie
    * newTrieNode() {
    int i;
    Trie
    * node = (Trie *) malloc(sizeof(Trie));
    for (i = 0; i < 26; i++) {
    node
    ->br[i] = NULL;
    }
    node
    ->num = 0;
    return node;
    }

    void insert(Trie *root, char *str, int len) {
    int i;
    if (len <= 0) {
    root
    ->num = 1;
    return;
    }
    i
    = (*str) - 'a';
    if (!root->br[i]) {
    root
    ->br[i] = newTrieNode();
    }
    insert(root
    ->br[i], str + 1, len - 1);
    }

    void count(Trie *root) {
    int i;
    for (i = 0; i < 26; i++) {
    if (root->br[i]) {
    count(root
    ->br[i]);
    root
    ->num += root->br[i]->num;
    }
    }
    }

    void destroy(Trie *root) {
    int i;
    for (i = 0; i < 26; i++) {
    if (root->br[i] != NULL) {
    destroy(root
    ->br[i]);
    }
    }
    free(root);
    }

    void putprefix(Trie *root, char *str, int len) {
    int i;
    if(len < 1 || root->num <= 1) {
    return ;
    }
    putchar(
    *str);
    i
    = (*str) - 'a';
    putprefix(root
    ->br[i], str + 1, len - 1);
    }

    void work() {
    Trie
    *root = newTrieNode();
    int len, i;
    N
    = 0;
    while (scanf("%s", strs[N]) != EOF) {
    N
    ++;
    }
    for(i = 0; i < N; i++) {
    len
    = strlen(strs[i]);
    insert(root, strs[i], len);
    }
    count(root);
    for(i = 0; i < N; i++) {
    printf(
    "%s ", strs[i]);
    putprefix(root, strs[i], strlen(strs[i]));
    putchar(
    '\n');
    }
    destroy(root);
    }

    int main() {
    #ifndef ONLINE_JUDGE
    freopen(
    "data.in", "r", stdin);
    #endif
    work();
    return 0;
    }
  • 相关阅读:
    利用requests, beautifulsoup包爬取股票信息网站
    Mac自带编码转换工具iconv
    Flask 快速入门
    HTML模版组件
    JavaScript正则表达式及jQuery回顾
    jQuery 教程
    Document
    Document
    Document
    Document
  • 原文地址:https://www.cnblogs.com/moonbay/p/2144873.html
Copyright © 2011-2022 走看看