前缀树,贪心算法和N皇后
前缀树
前缀树的点的数据结构:
pass:记录创建前缀树时,该节点被经过多少次
end:记录该节点是多少个字符串的结尾
nexts:记录有多少条路从该节点出发
查询该字符串加入过几次:
查询加入的字符串中,有几个是以pre这个字符串为前缀的:
删除某个字符串:
贪心算法:
例题1:
按照时间结束早的会议先安排
字典序:将两个字符串按照字典(并非数据结构,为现实中的字典)的顺序排列
给定一个字符串数组,使其按照某种顺序拼接后使其字典序最小,使用的贪心策略为:两个字符串a,b,若ab结合字典序小于等于ba结合则a放前,否则b放前
例题2:
使用哈夫曼编码
哈夫曼编码:
如上图,给定一个数组,将所有树压入,小根堆,1)弹出两个数,结合存入cur中,2)将结合后的数压入小根堆,重复1)2)直至小根堆中只剩一个数为止,便可得到最小代价
代码实现:
例题3:
N皇后问题:
时间复杂度为O(N^N),可以进行常数级别上的优化(使用位运算来加速)
优化后
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Sky小天的个人博客!