GESP 六级 · GESP 202409 C++ 六级 第 6 题

选择题 · 答案 b · 考点:贪心算法

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

题目

假设字母表 $\{a,b,c,d,e\}$ 在字符串中出现的频率分别为 $10\%$,$15\%$,$30\%$,$16\%$,$29\%$。若使用哈夫曼编码方式对字母进行二进制编码,则字符 $\tt abcdef$ 分别对应的一组哈夫曼编码的长度分别为( )。

答案:b

考点

贪心算法 讲解 →贪心算法 真题汇总 →

解题思维

仔细审题,明确已知条件和所求目标,运用相关知识点逐项分析。

常见错误

审题时注意题目要求(选正确还是选错误),避免因审题不清失分。涉及代码的题目要逐行分析变量变化。

详细解析(节选)

【考点】哈夫曼编码|贪心算法|频率排序

🎯 考纲定位:本题在 GESP 六级算法模块,专门卡住那些只会背结论、不会手建树的学生——必须从最小值合并开始,一步步模拟构造过程。

🧠 解题思维:看到题先排序:a(10),b(15),d(16),e(29),c(30)。第一步合并a+b=25,第二步d+e=45,第三步25+c=55,第四步45+55=100。画树:c在左子树根(深度2),a,b在25的子树(深度3),d,e在45的子树(深度2)。对应长度a=3,b=3,c=2,d=2,e=2。通法是"最小堆模拟合并",每次取两个最小节点建树,深度即编码长度。

🪤 陷阱拆解:错误选项A和D把a,b写成4,说明合并顺序错了——其实a+b=25,深度3,不是4。选项C把c写成1,太离谱了。最阴险的是选项B里c=2,d=2,e=2,a=3,b=3,完全符合。如果你只背"频率大的编码短",就会选错——哈夫曼编码长度只跟树结构有关,跟字符名字无关,命题人故意用abcde的顺序来测试你是否真的画对了树。

🔄 反命题思维:如果把c频率改成5%,那c会先被合并,长度变成3,d,e长度变成2。刷到类似题,先问自己"这棵哈夫曼树长什么样",而不是直接算长度。

同考点真题

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