1. 程式人生 > >字典樹 統計難題HDU 1251

字典樹 統計難題HDU 1251

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct trie
{
trie *next[30];
int num;
};
trie *root;
void build(char *str)                         //建立字典樹
{
int len=strlen(str);
trie *p=root,*q;
for(int i=0;i<len;i++)
{
int id=str[i]-'a';
if(p->next[id]==NULL)
{
q=new trie;
q->num=0;
for(int j=0;j<30;j++)
q->next[j]=NULL;
p->next[id]=q;
}
p=p->next[id];
p->num++;                          //字典樹走過的節點次數+1,方便查詢
}
}
int find(char *str)                        //查詢字典樹
{
int len=strlen(str);
trie *p=root;
for(int i=0;i<len;i++)
{
int id=str[i]-'a';
if(p->next[id]==NULL)
return 0;
p=p->next[id];
}
return p->num;                    //直接返回經過的次數
}
int main()
{
char str[15];
char a;
int tot;
root=new trie;
for(int i=0;i<30;i++)
root->next[i]=NULL;
root->num=0;
while(gets(str)&&str[0])
{
build(str);
}
while(gets(str))
{
printf("%d\n",find(str));
}
return 0;
}

相關推薦

字典 統計難題HDU 1251

#include <stdio.h> #include <stdlib.h> #include <string.h> struct trie {trie *next[30];int num; }; trie *root; void bui

統計難題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 (字典)

傳送門 題意:給出一組單詞,然後再給出一組字首,問這組單詞擁有這組字首的單詞數量是多少? 題解:使用字典樹,在insert函式中稍稍變形即可。 附上程式碼: #include<bits/stdc++.h> using namespace std; const int

字典模板題(統計難題 HDU - 1251

https://vjudge.net/problem/HDU-1251 標準的字典樹模板題: 也注意一下輸入方法: #include<iostream> #include<cstdio> #include<cstring> using namespace std

統計難題 HDU - 1251 -字典-連結串列實現

統計難題  HDU - 1251  題意:輸入資料的第一部分是一張單詞表,每行一個單詞,單詞的長度不超過10,它們代表的是老師交給Ignatius統計的單詞 ,一個空行代表單詞表的結束.第二部分是一連串的提問,每行一個提問,每個提問都是一個字串

統計難題 HDU - 1251 (Tire的基本運用)

題意:         給你多個單詞,然後在給你一個字串s,現在要問你以該字串s為字首的單詞數目有多少個? 分析:         標準的Trie樹應用,我們只需要用樹節點的v值表示以樹根roo

字典(Trie)附例題(統計難題 HDU

一、基礎理論:        字典樹,又稱單詞查詢樹,Trie樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計,排序和儲存大量的字串(但不僅限於字串),所以經常被搜尋引擎系統用於文字詞頻統計。 二、基本性質: 根節點不包含字元,除根節點之外每個子節點都包含一個

01字典加強版HDU 5536

01字典樹加強版HDU 5536 http://acm.hdu.edu.cn/showproblem.php?pid=5536 簡化版題意: 在一個數組中找出 (s[i]+s[j])^s[k] 最大的值,其中 i、j、k 各不相同。 這個題目我們就不能直接套用模板

UVA1167Hardwood Species字典 統計詞頻

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1167 Hardwoods are the botanical group o

[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 - 統計難題字典

Ignatius最近遇到一個難題,老師交給他很多單詞(只有小寫字母組成,不會有重複的單詞出現),現在老師要他統計出以某個字串為字首的單詞數量(單詞本身也是自己的字首). Input 輸入資料的第一部分是一張單詞表,每行一個單詞,單詞的長度不超過10,它們代表的是老師交給Ignatius統計的

HDU 1251 統計難題 字典

統計難題 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others) T

hdu 1251-統計難題(字典||map||陣列)

Problem Description Ignatius最近遇到一個難題,老師交給他很多單詞(只有小寫字母組成,不會有重複的單詞出現),現在老師要他統計出以某個字串為字首的單詞數量(單詞本身也是自己的字首). Input 輸入資料的第一部分是一張單詞表

HDU 1251 統計難題-字典

友情題目連結http://acm.hdu.edu.cn/showproblem.php?pid=1251 基礎字典樹: #include<cstdio> #include<cst

HDU 1251 統計難題(字典

Problem Description Ignatius最近遇到一個難題,老師交給他很多單詞(只有小寫字母組成,不會有重複的單詞出現),現在老師要他統計出以某個字串為字首的單詞數量(單詞本身也是自己的字首). Input 輸入資料的第一部分是一張單詞表,每行一個單

HDU 1251 統計難題字典

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

HDU 1251 統計難題字典

#include<stdio.h> #include<string.h> struct Node { Node *next[26];//每個節點的分支由單詞性質決定,這裡是小寫的26個字母 int cnt;//每個節點可以儲存一些資訊,這道題是儲存該字首的數量 Node()