統計難題 HDU 1251 (多種書寫方法)

2021-10-06 20:57:51 字數 2974 閱讀 1926

統計難題 hdu - 1251

ignatius最近遇到乙個難題,老師交給他很多單詞(只有小寫字母組成,不會有重複的單詞出現),現在老師要他統計出以某個字串為字首的單詞數量(單詞本身也是自己的字首).

input

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

注意:本題只有一組測試資料,處理到檔案結束.

output

對於每個提問,給出以該字串為字首的單詞的數量.

sample input

banana

band

beeabsolute

acmba

bband

abcsample output23

10字典樹寫法

#include

#include

#include

using

namespace std;

struct node};

node *root;

char str[21]

;void

creat

(char

*s) p=p-

>next[id]

; p-

>num++;}

}int

find

(char

*s) p=p-

>next[id];}

return p-

>num;

}void

delete

(node *root)

delete

(root);}

intmain()

while

(gets

(str)

)delete

(root)

;return0;

}

使用靜態記憶體儲存字典樹節點

這裡簡單介紹一下靜態記憶體和動態記憶體

#include

#include

#include

struct node

;node a[

1000000];

//靜態記憶體

int top;

node *

creat()

//構建子樹

node *

insert

(node *root,

char str)

//p->flag++;//讓字串中最後乙個字元,對應的結點的data值++,記錄該字元出現了幾次

return root;

}int

find

(node *root,

char str)

return p-

>num;

//字串迴圈成功走完

}int

main()

while

(gets

(str)

)return0;

}

利用結構體寫法

#include

#include

#include

struct node

a[1000000];

//a相當於乙個個的節點,從0開始乙個乙個增加,

int top;

//top 相當於建立節點的p一樣,建立乙個個節點

intcreat()

void

insert

(int root,

char s)

//進行插入,就是創造乙個字典,這裡的root一直都是0

//a[root].flag++;//判斷下乙個字母之前是否存在,最後記錄這個單詞的這個字母,讓它++,看看這個單詞出現幾次

}int

find

(int root,

char s)

return a[root]

.num;

//直到判斷完全部字母,然後返回最後乙個字母的次數

}int

main()

while

(gets

(str)

)return0;

}

利用二維陣列

#include

using

namespace std;

char s[20]

;int trie[

500010][

26];//陣列開的很玄學,大一點tle小一點rte

int a[

500010];

//用來計數字首

int b[

500010];

//用來記錄單詞結尾

int f =1;

void

insert()

p = trie[p]

[id]

; a[p]++;

}//b[p]++;

}int

find()

return a[p];}

intmain()

while

(gets

(s))

return0;

}

map函式寫法,自行了解。

#include

#include

#include

#include

#include

using

namespace std;

mapint>q;

intmain()

} string s;

while

(cin>>s)

cout<

}

統計難題 hdu1251

昨天在小策策 和 小超人的指導下學習了下字典樹,於是今天寫了下這個很早就想學的演算法 寫的很醜,而且還看了下課件的 include 2497868 2010 05 28 21 25 42 accepted 1251 93ms 43784k 1152 b c 悔惜晟 include include u...

HDU 1251 統計難題

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

hdu 1251統計難題

字典樹模版題 動態實現 include include include define maxn 26 struct node root void insert char str else int find char str return current count int main 靜態實現 inc...