HDU 1251 (初級字典樹)
Problem Description
Ignatius最近遇到一個難題,老師交給他很多單詞(只有小寫字母組成,不會有重複的單詞出現),現在老師要他統計出以某個字串為字首的單詞數量(單詞本身也是自己的字首).
Input
輸入資料的第一部分是一張單詞表,每行一個單詞,單詞的長度不超過10,它們代表的是老師交給Ignatius統計的單詞,一個空行代表單詞表的結束.第二部分是一連串的提問,每行一個提問,每個提問都是一個字串.
注意:本題只有一組測試資料,處理到檔案結束.
思路:
就是構建+查詢
構建字典樹的時候,注意num 的用處和flag的用處,分別代表著單詞的數目和結尾
標誌。
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int base = 'a',maxn = 26;
char s1[12],s2[12];
struct Tire
{
int num;
int flag;
Tire *son[maxn];
Tire() { //注意初始化
num = 1;
flag = false;
memset(son,NULL,sizeof (son));
}
};
/*-------------構造字典樹------------*/
Tire* NewTire()
{
Tire *temp = new Tire;
return temp;
}
void Insert(Tire *root,char *s)
{
Tire *temp = root;
while(*s) {
if(temp->son[*s-base] == NULL) {
temp->son[*s-base] = NewTire();
}
else
temp->son[*s-base]->num++;
temp = temp->son[*s-base];
s++;
}
temp->flag = true;
}
int Serach(Tire *root,char *s)
{
Tire *temp = root;
while(*s) {
if(temp->son[*s-base] == NULL) return 0;
temp = temp->son[*s-base];
s++;
}
return temp->num;
}
int main()
{
//freopen("in.txt","r",stdin);
Tire *root = NewTire();
root->num = 0;
while(gets(s1) && strcmp(s1,"") != 0) {
Insert(root,s1);
}
while(cin>>s2) {
int ans = Serach(root,s2);
cout<<ans<<endl;
}
return 0;
}
相關推薦
HDU 1251 (初級字典樹)
Problem Description Ignatius最近遇到一個難題,老師交給他很多單詞(只有小寫字母組成,不會有重複的單詞出現),現在老師要他統計出以某個字串為字首的單詞數量(單詞本身也是自己的
統計難題HDU-1251(字典樹)
wkt mtu shp isl com shuf rrd xe8 xdg yhly5c梅覆來粕倜叛http://docstore.docin.com/sina_6341912133p1s7b1澇淪家濤缺細http://www.docin.com/gxk352s1mtus俟酚
hdu 1251簡單字典樹
#include<stdio.h> #include<iostream> #include<string.h> using namespace std; struct node {int num,i;node *a[27];node ()
Xor Sum HDU - 4825(01字典樹)
技術分享 返回 view node img clas 技術 pre i++ Xor Sum HDU - 4825 (orz從之前從來沒見過這種題 1 #include <bits/stdc++.h> 2 using namespace s
初級字典樹查找在 Emoji、關鍵字檢索上的運用 Part-1
行修改 諸多 解決 enume ref 數值 長度 關於 定位 系列索引 Unicode 與 Emoji 字典樹 TrieTree 與性能測試 生產實踐 前言 通常用戶自行修改資料是很常見的需求,我們規定昵稱長度在2到10之間。假設用戶試圖使用表情符號 ????????
統計難題 HDU - 1251 (Tire樹的基本運用)
題意: 給你多個單詞,然後在給你一個字串s,現在要問你以該字串s為字首的單詞數目有多少個? 分析: 標準的Trie樹應用,我們只需要用樹節點的v值表示以樹根roo
HDU 4825 (字典樹 +貪心)
Zeus 和 Prometheus 做了一個遊戲,Prometheus 給 Zeus 一個集合,集合中包含了N個正整數,隨後 Prometheus 將向 Zeus 發起M次詢問,每次詢問中包含一個正整數 S ,之後 Zeus 需要在集合當中找出一個正整數 K ,使得 K 與 S 的異或結果最大。Pr
HDU 1671 (字典樹 || string + vector)
目錄 題意: 思路: 1.字典樹 題意: T個案例,每一個案例給一個n,代表有n個號碼,接著輸入n個號碼。 如果其中有一個號碼是另一個號碼的字首則輸出NO,否則輸出YES。 思路: 1.字典樹 第一反應是字典樹、字首樹嘛……但是之前覺得就很難,不敢寫
HDU 4776 (字典樹)
題意: 一棵樹,有邊權,路徑價值為所有邊權異或的值,m次查詢,每次查詢第k大的路徑的價值 標題思路: 從1dfs出其他點到1的路徑的值,我們發現任意一條路徑可以表示為兩個值相異或,這樣題目就變成了n個數,問任意兩個異或的值中的第k
HDU 4825 01字典樹
題目連結 題意:給定一個集合和多個詢問,每個詢問為一個數,輸出集合中的一個數使得該數與詢問的異或和最大。 思路: 經典題。 對於集合中的每一個數從高位到低位插入一棵01字典樹,然後對於每一個
*hdu 5536(字典樹的運用)
Input The first line of input contains an integer T indicating the total number of test cases. The first line of each test case is an
[ACM] hdu 1251 統計難題 (字典樹)
第一次 stdio.h scrip null 明顯 output 代碼 ane 處理 統計難題 Problem Description Ignatius近期遇到一個難題,老師交給他非常多單詞(僅僅有小寫字母組成,不會有反復的單詞出現),如今老師要他統計出以某
HDU - 1251 統計難題 【字典樹Trie】
init nan fail printf pos 小寫 out esp spa Ignatius最近遇到一個難題,老師交給他很多單詞(只有小寫字母組成,不會有重復的單詞出現),現在老師要他統計出以某個字符串為前綴的單詞數量(單詞本身也是自己的前綴). Input輸入數據
HDU-1251統計難題 ,字典樹
num node IT print std ret mem algo cstring 題意:問許多單詞中,前綴是某個字符串的個數有多少個; 思路: 用字典樹建立,每個節點帶上num,記錄每次insert是,經過這個點的次數, 每次詢問,找到這個前綴對應的節點的num
【HDU - 1251 】統計難題(字典樹,求擁有公共字首的字串數量)
題幹: Ignatius最近遇到一個難題,老師交給他很多單詞(只有小寫字母組成,不會有重複的單詞出現),現在老師要他統計出以某個字串為字首的單詞數量(單詞本身也是自己的字首). Input 輸入資料的第一部分是一張單詞表,每行一個單詞,單詞的長度不超過10,它們代表的是老
統計難題 HDU - 1251 (字典樹)
傳送門 題意:給出一組單詞,然後再給出一組字首,問這組單詞擁有這組字首的單詞數量是多少? 題解:使用字典樹,在insert函式中稍稍變形即可。 附上程式碼: #include<bits/stdc++.h> using namespace std; const int
HDU 1251 - 統計難題 (字典樹)
Ignatius最近遇到一個難題,老師交給他很多單詞(只有小寫字母組成,不會有重複的單詞出現),現在老師要他統計出以某個字串為字首的單詞數量(單詞本身也是自己的字首). Input 輸入資料的第一部分是一張單詞表,每行一個單詞,單詞的長度不超過10,它們代表的是老師交給Ignatius統計的
字典樹模板題(統計難題 HDU - 1251)
https://vjudge.net/problem/HDU-1251 標準的字典樹模板題: 也注意一下輸入方法: #include<iostream> #include<cstdio> #include<cstring> using namespace std
HDU-1251-字典樹
原題: Ignatius最近遇到一個難題,老師交給他很多單詞(只有小寫字母組成,不會有重複的單詞出現),現在老師要他統計出以某個字串為字首的單詞數量(單詞本身也是自己的字首). Input 輸入資料的第
HDU 1251 統計難題 字典樹
統計難題 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others) T