菜鳥系列 字典樹

2021-07-03 12:38:40 字數 1114 閱讀 6310

做回菜鳥,老老實實重新學起:

動態模版:

//動態鍊錶實現

#define maxn 26

struct node

;node *root;

//字典樹建立

void createtrie(char *str)

else

}}//查詢

int findtrie(char *str)

return p->v;//返回以此為字首的串的數量

}//釋放空間

int dealtrie(node* t)

free(t);

return 0;

}void solve(int n,int m)

}tree[1000005];

void insert_tree(char *str)

j = tree[j].next[t];

tree[j].r++;//記錄以此為字首的單詞的數量

i++;

}}void query_tree(char *str)

j=tree[j].next[t];

i++;

}res=tree[j].r;//以此為字首的單詞的數量

}

題意:求給出字典中每個單詞能夠被特別的分別出最短字首;

思路:字典樹模版,遇到小於2的節點停止即可;

code:

#define n 123456s

#define maxn 26

char s[n][30];

struct node

;node *root;

//字典樹建立

void createtrie(char *str)

else

}}//查詢

int findtrie(char *str)

return p->v;//返回以此為字首的串的數量

}//釋放空間

int dealtrie(node* t)

free(t);

return 0;

}void solve()

for(j=0;j}int main()

菜鳥系列 劃分樹

做回菜鳥,老老實實重新學起 資料結構 求k大值及左右和模版 define n 123456 int sorted n 對原集合中元素排序後的值 int val 20 n val記錄第k層當前位置的值 int num 20 n 記錄元素所在區間當前位置前的元素進入到左子樹的個數 int lnum,rn...

菜鳥系列 最小生成樹

菜鳥就要老老實實重新學起 prim 遍歷所有點,找到最近的點加入樹中,更新距離陣列dist 鄰接矩陣存圖。模版 define n 1010 bool vis n int g n n dist n int prim int n return res 鄰接表存圖,公升序排列所有邊,並查集維護點集合,遍歷...

菜鳥授徒系列之母函式

這是第二次接觸母函式類問題,相比於第一次的朦朦朧朧,第二次更加深刻。深深地感到母函式的強大,真是解決組合問題的一 寶,將做過的題分類 總結加深一下記憶。母函式包括 普通生成函式 解決組合問題 指數生成函式 解決排列問題 這裡全部是普通生成函式,可解決一系列組合問題,做題時要將題意與生成函式 g x ...