请教huffman编码问题
cslxj 2008-11-23 02:18:19 已知:信源符号个数q、信源符号s(0),s(1)……s(q-1),信源概率分布p(0),p(1),……p(q-1), 注:括号里的0,1,……q-1等表示下标,下同。
算法:
1。如果q=2则返回编码:s(0)->0,s(1)->1
2.否则
a.重新排序s(0),s(1)……s(q-1),和p(0),p(1),……p(q-1),
b.创建一个符号s',其概率为p'=p(q-2)+p(q-1)
c.递归调用本算法得到s(0),s(1)……s(q-3),s'的编码w(0),w(1)……w(q-3),w',它的概率分布为p(0),p(1),……p(q-3), p'
d.返回编码:s(0)->w(0),…… s(q-3)->w(q-3),s(q-2)->w'0,s(q-1)->w'1
要求:
使用C++语言,
输入:信源符号个数,每个信源符号的概率分布在运行时从键盘输入;
输出:每个信源符号及其对应的码字
会做的交流一下咯,谢谢