青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

付翔的專欄
在鄙視中成長 記錄成長的點滴
posts - 106,  comments - 32,  trackbacks - 0
昨天斷網 博客沒有寫全 呵呵

時間限制: 
1000ms
 
內存限制: 
131072kB
描述
在有道搜索框中,當輸入一個或者多個字符時,搜索框會出現一定數量的提示,如下圖所示:


現在給你N個單詞和一些查詢,請輸出提示結果,為了簡化這個問題,只需要輸出以查詢詞為前綴的并且按字典序排列的最前面的8個單詞,如果符合要求的單詞一個也沒有請只輸出當前查詢詞。
輸入
第一行是一個正整數N,表示詞表中有N個單詞。
接下來有N行,每行都有一個單詞,注意詞表中的單詞可能有重復,請忽略掉重復單詞。所有的單詞都由小寫字母組成。
接下來的一行有一個正整數Q,表示接下來有Q個查詢。
接下來Q行,每行有一個單詞,表示一個查詢詞,所有的查詢詞也都是由小寫字母組成,并且所有的單詞以及查詢的長度都不超過20,且都不為空
其中:N<=10000,Q<=10000
輸出
對于每個查詢,輸出一行,按順序輸出該查詢詞的提示結果,用空格隔開。
樣例輸入
10
a
ab
hello
that
those
dict
youdao
world
your
dictionary
6
bob
d
dict
dicti
yo
z
樣例輸出
bob
dict dictionary
dict dictionary
dictionary
youdao your
z









































































用的是trie 樹
#include <stdio.h>
#include 
<stdlib.h>
#include 
<string.h>
#include 
<iostream>
#include 
<string>
#include 
<vector>
#include 
<map>
#include 
<queue>
#include 
<algorithm>
using namespace std;

/*
*
*/
struct node{
    
int next[26];// 對于某一層而言  next【i】 中i就表示該層有的字符了 next【i】的值指向他所指向的結構
    int flag;// 用來標記節點有沒有被使用
}trie[210000];
char str[100];
char ans[100];
int totle=1;
void insert(){
    
int p=0;
    
int k=0;
    
while(str[k]){
        
int v=str[k]-'a';
        
if(trie[p].next[v]==-1)trie[p].next[v]=totle++
        p
=trie[p].next[v];
        k
++;
    }
    trie[p].flag
=1;
}
int cur;
void dfs(int k,int p)//此樹在組織的時候 就是按字典來排的 
{
    
if(cur>=8)return;
    
if(trie[p].flag!=-1){
        ans[k]
=0;
        
if(cur==0)printf("%s",ans);
        
else printf(" %s",ans);
        cur
++;
    }
    
for(int i=0;i<26;i++)
        
if(trie[p].next[i]!=-1){
            ans[k]
=i+'a';
            dfs(k
+1,trie[p].next[i]);
        }
        
return;
}
void find(){
    cur
=0;
    
int p=0,k=0;
    
while(str[k]&&p!=-1)//比如 abc 按根開始 找到匹配 c 第三層的 P 
    {
        p
=trie[p].next[str[k]-'a'];
        ans[k]
=str[k];
        k
++
    }
    
if(p==-1)// 沒有匹配的 那么直接打印 按題意來
    {
        printf(
"%s\n",str);
        
return;
    }
    dfs(k,p);
//繼續搜 str[k]個字符
    printf("\n");
}
int main() 
{
    freopen(
"in.txt","r",stdin);
    vector
<string> my;
    
int n;
    memset(trie,
-1,sizeof(trie));
    scanf(
"%d",&n);
    
for(int i=0;i<n;i++){
        scanf(
"%s",str);
        insert();
    }
    
int q;
    scanf(
"%d",&q);
    
while(q--){
        scanf(
"%s",str);
        find();
    }
    
return 0;
}


同時還看到一位牛人 用stl 寫的 那個牛叉 也貼上了 以供自己參考

using namespace std;

string ts;

bool issub(const string c)
{
    
if (ts.length() > c.length()) return false;
    
return ts == c.substr(0, ts.length());//c字串中要存在ts 返回true
}

typedef vector
<string> DIC;

int main()
{
    DIC dict;
    
string str;
    size_t dsize, ssize;
    cin 
>> dsize;
    dict.reserve(dsize);
//確保dict 的容量至少為dsize
    for (size_t i = 0; i < dsize; ++i)
    {
        cin 
>> str;
        dict.push_back(str);
    }
    std::sort(dict.begin(), dict.end());
//排序
    dict.erase(std::unique(dict.begin(), dict.end()), dict.end());//去除重復的
    cin >> ssize;
    
for (size_t i = 0; i < ssize; ++i)
    {
        DIC::iterator iter;
        cin 
>> ts;
        
bool found = false;
        iter 
= lower_bound(dict.begin(), dict.end(),ts);
        
//此函數在msdn 的解釋為 在dict 中插入ts 最小的位置并維持序列有序
        for(size_t j=0;j<8 && iter!=dict.end();++j,++iter)
        {
            
if(issub(*iter)){
                cout
<<*iter<<" ";
                found
=true;
            }
        }
        
if (!found)
            cout 
<< ts;
        cout 
<< endl;
    }
    
return 0;
}

posted on 2010-05-30 00:03 付翔 閱讀(333) 評論(0)  編輯 收藏 引用 所屬分類: ACM 數據結構c++

<2010年7月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

常用鏈接

留言簿(2)

隨筆分類

隨筆檔案

文章分類

文章檔案

CSDN - 我的blog地址

博客

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产区亚洲区欧美区| 欧美日韩精品三区| 亚洲一区二区三区免费在线观看| 午夜宅男久久久| 欧美日本中文字幕| 国产视频在线观看一区二区| 欧美日韩精品一区| 亚洲精品免费看| 欧美xx69| 久久综合国产精品| 精品999久久久| 欧美激情一区二区在线| 欧美国产精品久久| 亚洲综合日韩在线| 久久国产色av| 日韩亚洲欧美高清| 亚洲在线观看免费视频| 亚洲国产欧美另类丝袜| 亚洲福利视频专区| 欧美日韩国产一区二区三区地区 | 欧美日韩亚洲高清| 欧美一级免费视频| 欧美激情精品久久久| 美国十次成人| 国产亚洲欧洲| 亚洲一线二线三线久久久| 亚洲激情综合| 老司机aⅴ在线精品导航| 久久精品女人的天堂av| 国产精品99免费看| 亚洲精品美女免费| 亚洲综合色网站| 亚洲一级黄色| 国产精品成人免费| 亚洲免费成人av| 亚洲一区免费网站| 欧美视频一二三区| 在线午夜精品| 午夜精品久久久久99热蜜桃导演| 欧美高清在线视频| 欧美成人一区二区三区在线观看| 国产偷自视频区视频一区二区| 亚洲在线日韩| 久久婷婷国产综合尤物精品 | 久久久久久91香蕉国产| 国产精品永久在线| 欧美在线中文字幕| 欧美成人按摩| 国产亚洲欧美日韩日本| 欧美一区午夜视频在线观看| 久久久一区二区三区| 国产精品素人视频| 久久精品一区二区国产| 美女主播精品视频一二三四| 亚洲成色最大综合在线| 欧美久久电影| 久久精品国产欧美激情| 亚洲国产高清自拍| 亚洲一区网站| 亚洲七七久久综合桃花剧情介绍| 欧美日产国产成人免费图片| 久久av免费一区| 亚洲性图久久| 亚洲美女视频在线观看| 欧美bbbxxxxx| 久久久综合视频| 亚洲在线免费视频| 久久久久在线观看| 亚洲激情视频在线播放| 久久精品中文字幕一区二区三区| 亚洲综合色噜噜狠狠| 亚洲精品日韩激情在线电影| 国产美女一区| 欧美激情久久久久久| 午夜在线精品偷拍| 亚洲图片欧洲图片av| 亚洲欧洲一区二区在线播放 | 亚洲欧美日韩区| 日韩视频专区| 在线亚洲一区二区| 亚洲精品在线免费观看视频| 欧美激情一区二区三区高清视频 | 一区二区三区av| 老司机午夜精品| 久久嫩草精品久久久久| 午夜精品三级视频福利| 亚洲美女啪啪| 亚洲欧美综合精品久久成人| 亚洲免费一在线| 久久av资源网| 美女精品视频一区| 亚洲国产片色| 亚洲人成久久| 久久国产精品久久久| 欧美在线观看你懂的| 米奇777在线欧美播放| 欧美性大战久久久久久久蜜臀| 欧美日韩视频不卡| 国产一区在线播放| 亚洲一区二区三区欧美| 久久精品亚洲乱码伦伦中文| 免费成人性网站| 一本色道久久99精品综合| 亚洲无限av看| 欧美 日韩 国产 一区| 91久久在线观看| 亚洲视屏在线播放| 午夜在线精品| 欧美午夜一区| 亚洲国产欧美另类丝袜| 欧美有码在线视频| 亚洲美女区一区| 欧美国产在线视频| 在线成人h网| 久久久久久久久久久久久久一区| 99精品福利视频| 欧美精品v日韩精品v韩国精品v | 欧美一区二区视频在线| 欧美日韩精品综合| 一本色道久久88综合亚洲精品ⅰ | 午夜一级在线看亚洲| 欧美午夜片在线免费观看| 99国产精品99久久久久久粉嫩| 免费欧美日韩国产三级电影| 久久国产欧美精品| 一区二区三区在线看| 另类激情亚洲| 欧美黄色影院| 亚洲在线一区二区| 午夜精品免费视频| 国产专区欧美精品| 亚洲第一精品夜夜躁人人爽| 免费日韩视频| 中文亚洲免费| 欧美影院在线| 亚洲精品欧洲精品| 一区二区三区精品久久久| 国产精品中文在线| 你懂的网址国产 欧美| 欧美日韩国产另类不卡| 久久综合色影院| 久久久亚洲国产美女国产盗摄| 久久久久在线观看| 老色鬼久久亚洲一区二区| 久久综合伊人77777蜜臀| 亚洲欧美成人一区二区在线电影 | 久久影院亚洲| 亚洲欧美日韩直播| 欧美精品久久99久久在免费线| 欧美怡红院视频一区二区三区| 久久影院午夜片一区| 久久9热精品视频| 国产精品地址| 一本久久综合亚洲鲁鲁| 亚洲国产日韩欧美| 久久久久久久国产| 久久精品国产一区二区电影 | 亚洲一区黄色| 欧美日韩免费观看一区=区三区| 免费不卡中文字幕视频| 国产伦精品一区二区三区在线观看 | 亚洲欧美日韩中文视频| 亚洲一区二区成人| 欧美成人午夜激情视频| 欧美成人第一页| 伊人色综合久久天天五月婷| 亚洲天堂视频在线观看| 9色国产精品| 国产精品人人做人人爽| 亚洲午夜在线视频| 久久精品国产清高在天天线| 国产一级一区二区| 久久久久久亚洲精品杨幂换脸| 久久久亚洲精品一区二区三区| 国产综合色精品一区二区三区| 久久国产精品久久久久久电车| 久久在线免费| 99国产精品久久久| 国产精品欧美日韩久久| 日韩网站在线看片你懂的| 欧美日本视频在线| 欧美一区二区三区婷婷月色 | 激情久久一区| 欧美高清在线视频| 亚洲欧美国产精品桃花| 欧美电影免费网站| 亚洲欧美日韩另类| 亚洲国产成人91精品| 欧美性一二三区| 欧美激情精品久久久久久久变态| 在线视频欧美精品| 欧美成人免费全部| 国产精品久久综合| 你懂的视频欧美| 久久成人精品无人区| 一区二区三区四区国产| 欧美福利电影网| 欧美99在线视频观看| 久久精品一区二区三区中文字幕| 日韩视频在线观看|