Tire(字典樹)演算法題目 hdu 1671

2021-09-19 07:49:35 字數 1651 閱讀 2618

題目大意:每組資料給n個號碼,假設某乙個**號碼恰好是另乙個**號碼的字首,那麼這組案例是失敗的,輸出no,因為它不能保證每個**都能撥打出去。題目本質就是尋找乙個字串是否恰好是另一字串的字首,若是,則輸出no

**如下:

#include #include #include #include #include #include #include #include #include #include using namespace std;

const int siz=100005;

int rt,sig;

char s[15];

int num[siz];

int tr[siz][15];

void in()

num[u]++;

}void get()

u=tr[u][s[i]-'0'];

// printf("u2:%d\n",u);

}sig=1;

}int main()

if(sig)

printf("no\n");

else

printf("yes\n");

}return 0;

}

**分析:

這裡**利用的是陣列模擬解決字典樹問題。

int tr[siz][15];//siz處出現的字母

void in()//u上節點編號,rt下節點編號

//按輸入順序編號? 錯

num[u]++; //以誰為字首,個數儲存 錯

//對每一字串,某一位置的字元在之前字串的對應位置是否統計過 錯

//對於陣列的第u個位置處,出現了幾種字元 錯

//對於某一字串它的長度是多少

//printf("u1:%d %d\n",u,num[u]);

}void get()

u=tr[u][s[i]-'0'];//為查詢下個字母做準備

// printf("u2:%d\n",u);

} //如果走到之前某個串的結尾,或者

sig=1;

//當前串全走的之前的節點則直接標記

}int main()

if(sig)

printf("no\n");

else

printf("yes\n");

}return 0;

}

Tire樹(字典樹)

trie樹,即字典樹,又稱單詞查詢樹或鍵樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計和排序大量的字串 但不僅限於字串 所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是 最大限度地減少無謂的字串比較,查詢效率比雜湊表高。trie的核心思想是空間換時間。利用字串的公共字首來降低查詢時間的...

演算法 Tire樹

時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 小hi和小ho是一對好朋友,出生在資訊化社會的他們對程式設計產生了莫大的興趣,他們約定好互相幫助,在程式設計的學習道路上一同前進。這一天,他們遇到了一本詞典,於是小hi就向小ho提出了那個經典的問題 小ho,你能不能對於每乙個...

Tire樹(字典樹)的基本操作

tire樹的基本原理 tire樹是一種樹形結構,因其是詞典的一種儲存方式,故又叫字典樹。詞典中的每乙個單 詞在tire樹中表現為一條從根結點出發的路徑,路徑邊 上的點連起來就是一顆tire樹,如右圖 tire樹的基本性質可以歸納為 1 根結點不包含字元,其他的每乙個節點只包含乙個字元 2 從根結點到...