首页 > 其他分享 >sicp每日一题[2.71]

sicp每日一题[2.71]

时间:2024-11-06 21:58:21浏览次数:1  
标签:10 2.71 每日 tree sicp symbols symbol

Exercise 2.71

Suppose we have a Huffman tree for an alphabet of n symbols, and that the relative frequencies of the symbols are 1,2,4, . . . ,2n 1. Sketch the tree for n = 5; for n = 10. In such a tree (for general n) how many bits are required to encode the most frequent symbol? The least frequent symbol?


这道题挺简单的,只要明白了霍夫曼编码的逻辑,自己画一下就可以了,这会是一种非常不平衡的树,除了权重最低的两个符号构成了一个完整的子树,其他的子树都只有一个叶子,n=5 时如下图所示,n=10太多了就不画了,跟这个类似。

可以看出,当有 n 个符号时,使用频率最高的符号只需要1位就可以表示,频率最低的则需要 n-1 位。

标签:10,2.71,每日,tree,sicp,symbols,symbol
From: https://www.cnblogs.com/think2times/p/18531147

相关文章

  • 20241107,LeetCode 每日一题,使用 Go 计算两数相加
    思路模拟加法:链表存储的是逆序数位,因此从头节点开始,逐位相加可以模拟正常的加法。每两个节点的值相加,并记录进位。逐节点相加:创建一个新的链表,用于存储结果,每次将两个链表对应节点的值加上进位值,结果存储到新链表的节点中。计算过程中,将(l1.Val+l2.Val+carry)相加的......
  • 20241107,LeetCode 每日一题,使用 Go 计算两数相加
    思路模拟加法:链表存储的是逆序数位,因此从头节点开始,逐位相加可以模拟正常的加法。每两个节点的值相加,并记录进位。逐节点相加:创建一个新的链表,用于存储结果,每次将两个链表对应节点的值加上进位值,结果存储到新链表的节点中。计算过程中,将(l1.Val+l2.Val+carry)相加的结......
  • LeetCode每日一题--3254.长度为k的子数组的能量值I
    代码解释:初始化结果数组:ans初始化为-1,因为如果子数组不满足条件,其能量值即为-1。连续递增子序列长度计数:cnt用于记录当前连续递增子序列的长度。遍历数组:使用enumerate遍历nums,同时获取元素的索引i和值x。更新连续递增子序列长度:如果当前元素是数组的第一......
  • sicp每日一题[2.70]
    Exercise2.70Thefollowingeight-symbolalphabetwithassociatedrelativefrequencieswasdesignedtoefficientlyencodethelyricsof1950srocksongs.(Notethatthe“symbols”ofan“alphabet”neednotbeindividualletters.)A2GET2SHA3......
  • 蓝桥杯每日一练--搜索旋转排序数组
    目录一、题目二、分析三、代码一、题目整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0<=k<nums.length)上进行了 旋转,使数组变为 [nums[k],nums[k+1],...,nums[n-1],nums[0],nums[1],...,nums[k-1]](......
  • 每日OJ题_牛客_相差不超过k的最多数_滑动窗口_C++_Java
    目录牛客_相差不超过k的最多数_滑动窗口题目解析C++代码Java代码牛客_相差不超过k的最多数_滑动窗口相差不超过k的最多数_牛客题霸_牛客网(nowcoder.com)描述:        给定一个数组,选择一些数,要求选择的数中任意两数差的绝对值不超过 k 。问最多能选择多少......
  • sicp每日一题[2.69]
    Exercise2.69Thefollowingproceduretakesasitsargumentalistofsymbol-frequencypairs(wherenosymbolappearsinmorethanonepair)andgeneratesaHuffmanencodingtreeaccordingtotheHuffmanalgorithm.(define(generate-huffman-treepairs)......
  • LeetCode 每日一题,用 Go 实现两数之和的非暴力解法
    题目给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。你可以按任意顺序返回答案。示例1:输入:nums=[2,7,11,15],target......
  • 10.23 每日总结(备案信息添加)
    之前几个月向公安和ICP分别备案。但是自己的网站一直没来得及跳转备案信息。现在补上。 另外,今天学习时长两小时。学习SpringCloud的OpenFeign整合Sentinel。修改cart-service模块的application.yml文件,开启Feign的sentinel功能:feign:sentinel:enabled:true#开启fe......
  • 10.24 每日总结(今天继续学习软考)
    终于又开始学习软考了。学习时长2小时。学习的的软件工程模块(下面懒得敲,就直接粘贴了):结构化方法:流程固定,针对需求明确的项目,自顶向下,逐层分解,面向数据流。将数据流映射为软件系统的模块结构,数据流类型包括变换流型和事务流型,不同类型的数据流有不同的映射方法。以瀑布模型为代......