有一天, gzs得到一本古代的英文本典, 很可惜, 由於年代久遠, 很多單詞都看不清楚了. 但是, 這怎麼能難倒我們的g神呢, g神想要用這本字典查詢一些單詞, 下面給出字典中的內容. 字典中的單詞全部由小寫字母組成, 字跡模糊的部分用'?'或者'*'來表示, '?'可以匹配乙個小寫字母, '*'可以匹配0個或者1個或者多個小寫字母. 例如, a?b可以代表aab, abb......azb, 而a*b可以代表ab, aab, abb...azb, aaab, aabb......然後給出一部分待查詢的單詞, 全部由小寫字母組成. 如果能在字典中找到這個單詞, 請輸出1, 否則, 輸出0.對於這種小事gzs覺得很是無聊, 你快來寫個程式幫幫他吧. 輸入
第一行包含乙個整數t(t <= 1000), 表示測試資料的組數.
每組測試資料的第一行有兩個整數n(0 < n < 1000) 和m (0 < m < 1000),
分別表示字典中單詞的數目和待查詢的單詞的數目
接下來n行, 代表字典中的單詞, 每個單詞由小寫字母和'?'以及'*'組成, 單詞長度不超過6.
接下來m行, 代表待查詢的單詞, 每個單詞由小寫字母組成, 單詞長度不超過20. 輸出
每組資料輸出兩行
第一行 case #x:, x表示組數編號,從1開始.
第二行 對於每個待查詢的單詞, 如果存在於字典中, 則輸出1, 否則, 輸出0.
樣例輸入1
複製
22 3*
?abjaba
3 4ab?d
a*eabc
abcd
abcde
axae
樣例輸出1
case #1:111case #2:
建立字典書,把可能查到的單詞存到字典樹上,後面直接查詢。
#include #include #include #include #include #include #include using namespace std;
typedef struct treetree;
tree * createtreenode()
bool isover(char str)
void renewtree(tree * pcur,char str)
int x;
if(str[0] == '?') x = 26;
else if(str[0] == '*') x = 27;
else x = str[0] - 'a';
if(pcur->next[x] == null)
pcur->next[x] = createtreenode();
pcur->over = isover(str) || pcur->over; // 在原來的基礎上更新是否結束。
renewtree(pcur->next[x],str+1);
}bool yes;
void enqurytree(tree * pcur, char str)
int x = str[0] - 'a';
if(pcur->next[26])
enqurytree(pcur->next[26] , str+1);
if(pcur->next[x])
enqurytree(pcur->next[x] , str+1) ;
if(pcur->next[27])
}int ans [1010];
int main()
int k = 0;
for(int i = 0; i < m;i++)
printf("case #%d:\n",c++);
for(int i = 0; i < k; i++)
printf("%d",ans[i]);
printf("\n");
}return 0;
}
qduoj GZS與古英文本典
題意 中文題思路 構造字典樹,注意標註最後終止條件!ps 學弟問我,做了一上午都wa,感覺大一白學了t t,還好最後現看了看模板調處來了!include include include include includeusing namespace std typedef struct tree tr...
4 字典與字典練習
python中字典 dict 的詳解 python中的字典是python的一種資料結構,它的本質是key和value以及其對應關係的一種集合,乙個key可以對應乙個多個value。合理的使用字典能給我們程式設計帶來很大的方便。字典的 key 不能變 vaues 可變 字典 是雜湊表 無序的。字典的方...
字典樹 與 01字典樹
字典樹可以降低空間複雜度 01字典樹可以降低時間複雜度。字典樹 又稱單詞查詢樹,trie樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計,排序和儲存大量的字串 但不僅限於字串 所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是 利用字串的公共字首來減少查詢時間,最大限度地減少無謂的字串比較...