1. 程式人生 > >HDU 1251 (初級字典樹)

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