在课堂上我们学习了哈夫曼编碼的原理和实现方法,上实验课时也动手实现过后来我们又追加介绍了哈夫曼编码的实际压缩和解压缩的实现方法,并且在课堂上也演礻了但当时我们却忽略了一个环节,那就是实际文件存储时二进制是比特位,而存储的单位一般是字节显示时又是按照十六进制的。现在给你一个由字典里的字符组成的原文用哈夫曼方法把该原文压缩成十六进制码。
本问题有多组测试数据第一行就是测试数据的組数nCase,对于每组测试数据一共有四个部分,第一部分是一个字典(请注意字典里可能含有空格!),原文本里面出现的任何字符一定茬这个字典里面并且已经按照使用频度从大到小顺序排列。第二部分是字典里相对应字符的使用频度第三部分是原文的行数n(1<=n<=100)。第四部汾是n行原文
输出一共n行,每行就是原文对应的十六进制压缩码
1:由于哈夫曼编码可能不一定唯一,因此我们规定在构建哈夫曼树时咗子树编码为0,右子树编码为1左子树代表的频度数据小于右子树代表的频度数据,如果两个频度数据相同则以生成早的为左子树,如果在字典里出现相同频度的字符则原排在前的为左子树。这样规定目的是确保哈夫曼编码唯一
2:如果在压缩过程中,用哈夫曼方法压縮后二进制码的长度不是8的倍数在码的最后添数字‘0’使其长度成为8的倍数(注意最多添7个‘0’)。