• <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>

            ACM___________________________

            ______________白白の屋
            posts - 182, comments - 102, trackbacks - 0, articles - 0
            <2010年8月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            2930311234

            常用鏈接

            留言簿(24)

            隨筆分類(332)

            隨筆檔案(182)

            FRIENDS

            搜索

            積分與排名

            最新隨筆

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            MiYu原創(chuàng), 轉(zhuǎn)帖請(qǐng)注明 : 轉(zhuǎn)載自 ______________白白の屋    

             

            題目地址:

                 http://acm.hdu.edu.cn/showproblem.php?pid=1251 

            題目描述:

            統(tǒng)計(jì)難題

            Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others)
            Total Submission(s): 5025    Accepted Submission(s): 1853


            Problem Description
            Ignatius最近遇到一個(gè)難題,老師交給他很多單詞(只有小寫字母組成,不會(huì)有重復(fù)的單詞出現(xiàn)),現(xiàn)在老師要他統(tǒng)計(jì)出以某個(gè)字符串為前綴的單詞數(shù)量(單詞本身也是自己的前綴).
             

            Input
            輸入數(shù)據(jù)的第一部分是一張單詞表,每行一個(gè)單詞,單詞的長度不超過10,它們代表的是老師交給Ignatius統(tǒng)計(jì)的單詞,一個(gè)空行代表單詞表的結(jié)束.第二部分是一連串的提問,每行一個(gè)提問,每個(gè)提問都是一個(gè)字符串.

            注意:本題只有一組測試數(shù)據(jù),處理到文件結(jié)束.
             

            Output
            對(duì)于每個(gè)提問,給出以該字符串為前綴的單詞的數(shù)量.
             

            Sample Input
            banana band bee absolute acm ba b band abc
             

            Sample Output
            2 3 1 0
             

             

             

            題目分析:

                剛學(xué)字典樹 ,也就是 trie 樹, 教程很容易看明白, 1251 是一道很明顯的 模板題, 看過 PPT 后 直接敲代碼 1A.

            第一次做, 順便介紹下 trie樹 :

            字典樹(Trie)是一種用于快速字符串檢索的多叉樹結(jié)構(gòu)。其原理是利用字符串的公共前綴來降低時(shí)空開銷,從而達(dá)到提高程序效率的目的。

              它有如下簡單的性質(zhì):

                (1) 根節(jié)點(diǎn)不包含字符信息;

                (3) 一棵m度的Trie或者為空,或者由m棵m度的Trie組成。

               搜索字典項(xiàng)目的方法為:

                (1) 從根結(jié)點(diǎn)開始一次搜索;

                (2) 取得要查找關(guān)鍵詞的第一個(gè)字母,并根據(jù)該字母選擇對(duì)應(yīng)的子樹      并轉(zhuǎn)到該子樹繼續(xù)進(jìn)行檢索;

                (3) 在相應(yīng)的子樹上,取得要查找關(guān)鍵詞的第二個(gè)字母,

                  并進(jìn)一步選擇對(duì)應(yīng)的子樹進(jìn)行檢索。

                (4) 迭代過程……

                (5) 在某個(gè)結(jié)點(diǎn)處,關(guān)鍵詞的所有字母已被取出,則讀取

                  附在該結(jié)點(diǎn)上的信息,即完成查找。

            代碼如下 :

                當(dāng)然也可以拿來做模板 ,    

             /*

            MiYu原創(chuàng), 轉(zhuǎn)帖請(qǐng)注明 : 轉(zhuǎn)載自 ______________白白の屋

                      http://www.cnblog.com/MiYu

            Author By : MiYu

            Test      : 1

            Program   : 1251

            */


            #include <iostream>

            using namespace std;

            typedef struct dict DIC;

            struct dict {

                   dict (){ n = 0; memset ( child , 0 , sizeof ( child ) ); }

                   void insert ( char *ins )

                   {

                        DIC *cur = this,*now;

                        int len = strlen ( ins );

                        if ( len == 0 )  return ;

                        for ( int i = 0; i != len; ++ i )

                        {

                              if ( cur->child[ ins[i] - 'a' ] != NULL ) 

                              {

                                   cur = cur->child[ ins[i] - 'a' ];

                                   cur->n ++; 

                              }

                              else

                              {

                                   now = new DIC;

                                   cur->child[ ins[i] - 'a' ] = now;

                                   now->n ++;

                                   cur = now;

                              }

                        } 

                   }

                   int find ( char *ins )

                   {

                        DIC *cur = this;

                        int len = strlen ( ins );

                        if ( 0 == len )  return 0;

                        for ( int i = 0; i != len; ++ i )

                        {

                             if ( cur->child[ ins[i] - 'a' ] != NULL )

                                  cur = cur->child[ ins[i] - 'a' ];  

                             else

                                  return 0; 

                        } 

                        return cur->n;

                   }

            private:

                   DIC *child[26];

                   int n; 

            };

            char word[11];

            int main ()

            {

                DIC dict;

                while ( gets ( word ), strcmp ( word, "") != 0 )

                      dict.insert ( word );

                char qur[11];

                while ( scanf ( "%s",qur ) != EOF )

                {

                      printf ( "%d\n",dict.find ( qur ) ); 

                }    

                return 0;

            }


             

             

            久久九色综合九色99伊人| 欧美精品九九99久久在观看| 久久精品一本到99热免费| 久久ZYZ资源站无码中文动漫 | 久久er国产精品免费观看2| 久久国产精品99久久久久久老狼| 久久久久人妻精品一区三寸蜜桃| 久久久无码精品亚洲日韩蜜臀浪潮| 久久精品aⅴ无码中文字字幕不卡| 情人伊人久久综合亚洲| 久久人妻少妇嫩草AV蜜桃| 77777亚洲午夜久久多喷| 久久久久99这里有精品10| 97久久久精品综合88久久| 伊人热热久久原色播放www| 免费观看久久精彩视频| 婷婷综合久久中文字幕蜜桃三电影 | 久久无码AV中文出轨人妻| 91精品国产综合久久四虎久久无码一级| 久久久久国产日韩精品网站| 久久精品亚洲日本波多野结衣 | 久久久久99精品成人片欧美| 久久精品国产亚洲一区二区三区| 色狠狠久久AV五月综合| 久久久国产视频| 久久露脸国产精品| 日本一区精品久久久久影院| 午夜人妻久久久久久久久| 久久青青草视频| 久久精品这里只有精99品| 99久久精品费精品国产 | 麻豆久久| 久久久91人妻无码精品蜜桃HD| 久久久精品人妻一区二区三区蜜桃| 久久人人爽人人爽人人片AV不 | 伊人久久免费视频| 亚洲综合婷婷久久| 国产精品美女久久久久AV福利| 久久亚洲国产欧洲精品一| 久久国产精品波多野结衣AV | 国产精品久久久久久久app|