hihoCoder 1107 Shortest Proper Prefix (字典樹的遍歷)
題目連結:
http://hihocoder.com/problemset/problem/1107?sid=406355
題意:
求頻率不超過5的字首的數目。字典樹的遍歷
程式碼如下:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 10010;
const int max_size = 30;
int id(char c){
return c-'a';
}
struct Trie{
Trie *ch[max_size];
int num;
Trie(){
num = 0;
for(int i=0;i<max_size;i++)
ch[i]=NULL;
}
}*root;
void insert_str(char *s){
Trie *p = root;
p->num++;
for(int i=0; p&&s[i] ; i++){
int u = id(s[i]);
if(p->ch[u]==NULL)
p->ch[u] = new Trie;
p=p->ch[u];
p->num++;
}
}
int find_str(char *s){
Trie *p = root;
for(int i=0;p&&s[i];i++){
int u = id(s[i]);
if(p->ch[u]==NULL) return 0;
p=p->ch[u];
}
return p->num;
}
int ans;
void vis(Trie *nod){
Trie *p=nod;
if(p->num<=5&&p->num>0) {ans++;return;}
for(int i=0;i<max_size;i++)
if(p->ch[i]) vis(p->ch[i]);
}
char s[2000010];
int main()
{
int n, m;
while(~scanf("%d", &n)){
root = new Trie;
for(int i=0;i<n;i++){
scanf("%s", s);
insert_str(s);
}
ans = 0;
vis(root);
printf("%d\n",ans);
}
return 0;
}
相關文章
- Python字典的遍歷,包括key遍歷/value遍歷/item遍歷/Python
- Python字典遍歷的陷阱Python
- 樹的遍歷方式
- python---字典遍歷Python
- 二叉樹的建立、前序遍歷、中序遍歷、後序遍歷二叉樹
- 跋山涉水 —— 深入 Redis 字典遍歷Redis
- Python中的字典遍歷有序嗎?Python
- python字典的四種遍歷方式Python
- MySQL樹形遍歷MySql
- 二叉樹的廣度遍歷和深度遍歷()二叉樹
- Javascript樹(一):廣度遍歷和深度遍歷JavaScript
- 樹的遍歷c/c++C++
- 二叉樹的遍歷二叉樹
- Python中遍歷字典以及字典中的鍵和值Python
- python之 序列與字典遍歷Python
- 二叉樹建立,前序遍歷,中序遍歷,後序遍歷 思路二叉樹
- 玩轉二叉樹(樹的遍歷)二叉樹
- 二叉樹---遍歷二叉樹
- 二叉樹遍歷二叉樹
- MySQL樹形遍歷(三)MySql
- 二叉樹的遍歷 → 不用遞迴,還能遍歷嗎二叉樹遞迴
- 完全二叉樹的遍歷二叉樹
- MySQL 實現樹形的遍歷MySql
- C++樹——遍歷二叉樹C++二叉樹
- 144.二叉樹的前序遍歷145.二叉樹的後序遍歷 94.二叉樹的中序遍歷二叉樹
- [work] python巢狀字典的遞迴遍歷Python巢狀遞迴
- 面試中很值得聊的二叉樹遍歷方法——Morris遍歷面試二叉樹
- LintCode 前序遍歷和中序遍歷樹構造二叉樹二叉樹
- OC中陣列、字典的遍歷的三種方法陣列
- 二叉樹遍歷方法二叉樹
- 二叉樹遍歷 -- JAVA二叉樹Java
- 掌握 React 元件樹遍歷技巧React元件
- JAVA遍歷二叉樹Java二叉樹
- 根據二叉樹的前序遍歷和中序遍歷輸出二叉樹;二叉樹
- 建立二叉樹:層次遍歷--樹的寬度高度,後序遍歷--祖先節點二叉樹
- 二叉樹的遍歷實現二叉樹
- 二叉樹的遍歷筆記二叉樹筆記
- 二叉樹的層序遍歷二叉樹