GESP 六级 · GESP 202312 C++ 六级 第 7 题

选择题 · 答案 B

← 整套速查表 GESP 六级 全部真题

题目

对 hello world 使用霍夫曼编码(Huffman Coding),最少 bit(比特)为( )。

答案:B

解题思维

这道题考哈夫曼编码的总码长计算。拿到题先数清字符串里每个字符(含空格)出现几次,再按频率建哈夫曼树,最后把每个字符的频数乘以其对应编码长度求和,别把树深当总位长。

常见错误

最容易栽跟头的是漏掉空格。字符串中间的空格也是有效字符,若只数字母会少一个字符集元素,导致树结构全变。其次是误把树的高度当成总位长,或者用每个字符固定8位来算。还有可能把'l'看成4次出现,或者把'o'和'l'的频率搞混,这些都会让结果偏离正确答案。

详细解析(节选)

考点定位与命题视角

本题考查六级信息学模块中的“信息编码”核心概念——哈夫曼编码。命题人设题的意图很明确:卡住两个基本功。一是字符集的完整性,空格算不算?二是位长计算的本质,不是树深而是总码长。这是区分5级和6级的典型分水岭。

解题思维与计算步骤

拿到题先数频:字符串'hello world'中,h、e、空格、w、r、d各1次,o出现2次,l出现3次,共8个不同字符。按频率从低到高依次合并:1,1,1,1,1,1,2合并后得到节点序列,最终8个叶子节点的深度分布为:h、e、空格、w、r、d深度为2(6×2=12),o深度为3(2×3=6),l深度为4(3×4=12)。总位长12+6+12=32。记住通法:哈夫曼编码总位长=∑(频×该字符码长),不是树的高度。

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断