摘要: huffman1 //C保存所用的字符2 HUFFMAN(C)3 n=length(C)4 把C里的字符按频度从小到大组织成最小二叉堆5 for(i=1;i<n-1;++i)6 取出二叉堆的前两个字符,以他们为左右孩子节点组成一棵树7 该树的根节点频度为二者之和,将该根节点插入二叉堆8 阅读全文
posted @ 2012-02-09 20:30 Cavia 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 使用贪心算法来解决数据结构1 //Eleven activities,sort by finish time already, that's important.2 int Start[]={1,3,0,5,3,5,6,8,8,2,12};//Start time3 int Finish[]={4,5,6,7,8,9,10,11,12,13,14};//Finish time4 int n=11;//Eleven activities5 6 vector<int> Activity;//vector containing activities you choose贪心算法 阅读全文
posted @ 2012-02-09 17:39 Cavia 阅读(440) 评论(0) 推荐(0) 编辑
摘要: 给定一个由n个互异的关键字组成的序列K={k1,k2,...,kn},且关键字有序,对于每一个关键字ki,一次搜索为ki的概率是pi。某些搜索的值可能不在K内,因此还有n+1个虚拟键d0,d1,...,dn代表不再K内的值。d0代表所有小于k1的值,dn代表所有大于kn的值,对于i=1,2,...,n-1,di代表所有位于ki和ki+1之间的值。对每个虚拟键di,一次搜索对应于di的概率是qi。定义在T内一次搜索的期望代价为E=∑(depth(ki)+1)*pi+∑(depth(di)+1)*qi=1+∑depth(ki)*pi+∑depth(di)*qi一颗最优二叉查找树就是期望代价最小的B 阅读全文
posted @ 2012-02-09 15:12 Cavia 阅读(967) 评论(0) 推荐(0) 编辑