• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 14,  comments - 4,  trackbacks - 0
            記得一年前 跑去CSDN問HDU1251(http://acm.hdu.edu.cn/showproblem.php?pid=1251)的寫法,飛雪寫了個(gè)很精簡(jiǎn)的代碼,數(shù)組模擬字典樹。問題是那個(gè)代碼只適用于那道題目。
            后來有道開了一次網(wǎng)絡(luò)邀請(qǐng)賽,當(dāng)時(shí)就有那么一道字典樹的題,我對(duì)著它無解。。今天,我去看了一下字典樹,僅僅是靠自己理解了一下字典樹的圖。

            圖片地址:http://baike.baidu.com/view/1436495.htm

            居然就寫出了1251,相比與當(dāng)年飛雪的代碼他的時(shí)間是46MS 我今天寫的是93MS。可是讓我開心的是,我覺得我寫的這個(gè)擴(kuò)展性強(qiáng),我似乎有感覺我能解決當(dāng)年那題有道邀請(qǐng)賽的題目~~好開心呀~~
            當(dāng)年一個(gè)人在寢室一個(gè)勁的學(xué)習(xí)鏈表~~后來很長(zhǎng)一段時(shí)間覺得鏈表似乎沒什么用。。。直到上次的線段樹,現(xiàn)在的trie樹,或者以后的紅黑樹~B樹~?呵呵。如果沒有鏈表的基礎(chǔ)我不可能只看圖就能寫出字典樹,基礎(chǔ)如此的重要。
            貼下代碼:
              1/*
              2     3957388 2011-05-15 13:59:22 Accepted 1251 93MS 43768K 1163B C++ test 
              3     so happy learning sth by myself,share this happiness with you ^ ^
              4 */

              5
              6
              7
              8#include <iostream>
              9#include <cstdlib>
             10#include <cstdio>
             11#include <algorithm>
             12#include <cstring>
             13using namespace std;
             14
             15typedef struct tree 
             16{
             17    int num;
             18    struct tree *br[26];
             19}
            Node;
             20
             21void insert(char *str,Node *root) // 插入字典
             22{
             23    for(;*str;++str)
             24    {
             25        int id = *str-'a';
             26        if (root->br[id]!=NULL)
             27        {
             28            root->br[id]->num++;
             29        }

             30        else
             31        {
             32            root->br[id] = (Node *)malloc(sizeof(Node));
             33            root->br[id]->num=1;
             34            for (int j=0;j<26;++j)
             35            {
             36                root->br[id]->br[j]=NULL;
             37            }

             38        }

             39        root=root->br[id];
             40    }

             41}

             42
             43
             44int find(char *str,Node *root) // 查找單詞數(shù)
             45{
             46    for(;*str;++str)
             47    {
             48        int id = *str-'a';
             49        if (root->br[id]==NULL)
             50        {
             51            return 0;
             52        }

             53        else
             54        {
             55            if(*(str+1)==0)
             56            {
             57                return root->br[id]->num;
             58            }

             59            root=root->br[id];
             60        }

             61    }

             62    return 0;
             63}

             64
             65void freeM(Node *root) // 釋放內(nèi)存,其實(shí)OJ上不釋放不影響結(jié)果
             66{
             67    for(int i=0;i<26;++i)
             68    {
             69        if(root->br[i]!=NULL)
             70        {
             71            freeM(root->br[i]);
             72        }

             73    }

             74    free(root);
             75}

             76int main()
             77{
             78    char str[10];
             79    //freopen("data1.in", "r", stdin);
             80    //freopen("data1.out", "w+", stdout);
             81    Node *root=(Node *)malloc(sizeof(Node));;
             82    int i;
             83    for (i=0;i<26;++i)
             84    {
             85        root->br[i]=NULL;
             86    }

             87    while (gets(str))
             88    {
             89        if (str[0]==0)break;
             90        insert(str,root);
             91    }

             92    while (gets(str))
             93    {
             94        printf("%d\n",find(str,root));
             95    }

             96    //fclose(stdout);
             97    //fclose(stdin);
             98    freeM(root);
             99    return 0;
            100}

            posted on 2011-05-15 14:16 mr_chen 閱讀(318) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 數(shù)據(jù)結(jié)構(gòu)字典樹

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            常用鏈接

            留言簿

            隨筆檔案(14)

            文章分類(8)

            文章檔案(11)

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            色综合久久综合网观看| 亚洲精品乱码久久久久久按摩| 国产精品青草久久久久福利99 | 国产成人无码久久久精品一| 狠狠色丁香婷婷综合久久来| 国产精品九九久久精品女同亚洲欧美日韩综合区 | 高清免费久久午夜精品| 久久久久九九精品影院| 久久精品国产99久久久古代| 色综合久久天天综合| 一本色道久久88精品综合| 国产午夜精品久久久久九九| 久久精品国产亚洲AV蜜臀色欲| 伊人色综合久久天天| 亚洲AV无码1区2区久久| 免费一级做a爰片久久毛片潮| 久久亚洲精品中文字幕| 久久夜色精品国产www| 亚洲国产精品久久久久婷婷老年| 久久天天躁狠狠躁夜夜2020一| 久久se精品一区精品二区国产| 国产精品女同久久久久电影院| 99久久精品国产一区二区 | 色欲久久久天天天综合网| 久久精品国产国产精品四凭 | 精品久久久久久无码人妻热 | 亚洲中文字幕无码久久精品1| 99热精品久久只有精品| 69国产成人综合久久精品| 人妻久久久一区二区三区| 无码精品久久久天天影视| 亚洲伊人久久大香线蕉综合图片 | 久久99精品国产| 久久国产成人精品麻豆| 精品久久久久久亚洲| 精品无码久久久久国产| 色欲久久久天天天综合网精品| 午夜精品久久久久久中宇| 亚洲综合熟女久久久30p| 一本色道久久88精品综合| 久久久精品2019免费观看 |