主要思想:
1.根節點不含任何字元
2.每一層最多26個 ,26條路徑代表26個字母
3.從根節點到某乙個節點,路徑上經過的字元連線起來,為該節點對應的字串。
最基本的字典樹結構:
struct trie;
先序遍歷就是按字典公升序排列
//字典樹
//輸入同時插入 記錄字首
//查詢 字首個數為1 的就是最短
#include#include#includetypedef struct trietrie;
trie root;
//初始化
void init(trie* node)
void insert(char* str)
p= p->next[t];
p->num++; }}
void find(char* str)
}int main()
//查詢最短字串
for(int i=0;i1)資料結構的靈活使用!!!
字典樹
POJ2797 最短字首
總時間限制 1000ms 記憶體限制 65536kb 描述 乙個字串的字首是從該字串的第乙個字元起始的乙個子串。例如 carbon 的字串是 c ca car carb carbo 和 carbon 注意到這裡我們不認為空串是字串,但是每個非空串是它自身的字串.我們現在希望能用字首來縮略的表示單詞。...
1799 最短字首
總時間限制 1000ms記憶體限制 65536kb 描述 乙個字串的字首是從該字串的第乙個字元起始的乙個子串。例如 carbon 的字串是 c ca car carb carbo 和 carbon 注意到這裡我們不認為空串是字串,但是每個非空串是它自身的字串.我們現在希望能用字首來縮略的表示單詞。例...
LA 2797 怪物陷阱(平面直線PSLG)
題目 把直線的每兩個端點點處理一遍,因為只有貼著端點才能過。若遇到直線端點相交情況,把每條線段稍微延長一點,通過判斷是否相交即可判斷是否可以通過 includeusing namespace std struct point int n typedef point vector vector ope...