| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 7-9 Huffman Codes (30 分)- C语言实现 -> 正文阅读 |
|
[数据结构与算法]7-9 Huffman Codes (30 分)- C语言实现 |
太心累了,主要是一开始建堆出现了小问题,导致测试点一直没过。心烦意乱,采用printf调试(bushi),终于找出来了,是因为child的范围没考虑,忘记限制2*i<N 简单记录下要点,吃饭去了: 哈夫曼编码要点 1. 编码长度之和一定等于哈夫曼编码的长度之和,也就是哈夫曼树各个叶结点的路径之和,所以采用哈夫曼树主要就是为了算出路径长度,图省事,我也没建立树,直接算总和。 2. 要满足前缀码都不相同,cyll在mooc上采用的是构建树的方法去看是否有字符落在不是叶节点上,我偷懒直接采用strcmp暴力遍历 满足这两点就可以算得上是最优编码了。 原题In 1953, David A. Huffman published his paper "A Method for the Construction of Minimum-Redundancy Codes", and hence printed his name in the history of computer science. As a professor who gives the final exam problem on Huffman codes, I am encountering a big problem: the Huffman codes are NOT unique. For example, given a string "aaaxuaxz", we can observe that the frequencies of the characters 'a', 'x', 'u' and 'z' are 4, 2, 1 and 1, respectively. We may either encode the symbols as {'a'=0, 'x'=10, 'u'=110, 'z'=111}, or in another way as {'a'=1, 'x'=01, 'u'=001, 'z'=000}, both compress the string into 14 bits. Another set of code can be given as {'a'=0, 'x'=11, 'u'=100, 'z'=101}, but {'a'=0, 'x'=01, 'u'=011, 'z'=001} is NOT correct since "aaaxuaxz" and "aazuaxax" can both be decoded from the code 00001011001001. The students are submitting all kinds of codes, and I need a computer program to help me determine which ones are correct and which ones are not. Input Specification:Each input file contains one test case. For each case, the first line gives an integer?N?(2≤N≤63), then followed by a line that contains all the?N?distinct characters and their frequencies in the following format:
where?
where? Output Specification:For each test case, print in each line either "Yes" if the student's submission is correct, or "No" if not. Note: The optimal solution is not necessarily generated by Huffman algorithm. Any prefix code with code length being optimal is considered correct. Sample Input:
结尾无空行 Sample Output:
结尾无空行 解答
比较混乱,有闲情逸致再来修改总结。挥挥~ ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 11:30:53- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |