南宁网站制作费用it项目外包网

news/2025/10/1 10:35:09/文章来源:
南宁网站制作费用,it项目外包网,网站建设的公司工作室,想建立一个网站怎么做哈夫曼编码的设计与应用 问题需求分析 用哈夫曼编码(Huffman Coding)#xff0c;又称霍夫曼编码#xff0c;是一种编码方式#xff0c;哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法#xff0c;该方法完全依据字符出现概率来构造异字头的平均长…哈夫曼编码的设计与应用 问题需求分析 用哈夫曼编码(Huffman Coding)又称霍夫曼编码是一种编码方式哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法该方法完全依据字符出现概率来构造异字头的平均长度最短的码字有时称之为最佳编码一般就叫做Huffman编码(有时也称为霍夫曼编码)。 霍夫曼树又称最优二叉树是一种带权路径长度最短的二叉树。所谓树的带权路径长度就是树中所有的叶结点的权值乘上其到根结点的路径长度若根结点为0层叶结点到根结点的路径长度为叶结点的层数。树的路径长度是从树根到每一结点的路径长度之和记为WPLW1L1W2L2W3L3…WnLnN个权值Wii1,2,…n构成一棵有N个叶结点的二叉树相应的叶结点的路径长度为Lii1,2,…n。 数据结构的定义 哈夫曼树结构体包含如下内容节点权重当前节点的父节点左右子树节点信息。 哈夫曼编码结构体包含如下内容存编码的数组编码数组的开始标志。 功能详细设计 构建哈夫曼树使用一维数组每个节点存储权重父节点左子树右子树以及数值的信息。遍历整个数组根据每个节点的权重去找到最小以及第二小的节点然后对各自的父节点左右子树赋值建立两个节点的联系将他们的联系填入该结构体数组中。 哈夫曼树如下图: a权重45; b权重15; c权重12; d权重16; e权重9; f权重5 哈夫曼树结构体数组如下图(使用a, b, 58举例): 根据哈夫曼树建立哈夫曼编码从树的根节点开始根据每个叶子节点与父节点之间的联系使用哈夫曼编码结构体中的编码数组储存树种每个叶子节点的编码, 往左边遍历是0, 往右边遍历是1, 举例: a, 由建立好的哈夫曼树可得, 当遍历查找到a的时候, a到root的路径是: 100-86-58-a, 所以可得编码就是000; 根据哈夫曼编码将指定的编码转化为字符串读取到哈夫曼编码后当编码为0表示节点是左子树当编码为1的时候表示右子树根据已经建立好的哈夫曼树利用顺序遍历的方式根据左0右1寻找哈夫曼树中的叶子节点当某一节点在哈夫曼树中左右子树都为空的时候表示该节点即使叶子节点然后输出对应叶子节点在哈夫曼编码数组中的位置, 其原理与编码的方式恰恰相符, 而是根据01数字查找对应的叶子节点. 函数调用图: 编写代码体会 遇到的问题是数组下标没有弄好,导致建立哈夫曼树时出现各种错误, 进行编码过程没有将lchild与rchild的”变化写在一起”导致出现错误,其实最大的问题是:没有将代码的逻辑思路考虑清楚,还有边界条件值,最蠢的是没有打一下草稿,写一下伪代码,把程序的思想理解,导致编程的过程中出现各种问题,以后写代码之前还是把逻辑理清楚再动手写代码,最后再将代码写到电脑上测试。 完整代码 #includeiostream #includestring #includefstream using namespace std; struct Htnode{int weight,parent,lchild,rchild;char c; }; struct Htcode{int bit[25],start; }; int type(int a[]){string s;int sum 0; cout输入需要编码的字符串endl;cins;for(int i 0; i s.size(); i){a[s[i]-a];}cout出现的字母种类以及频率:endl; for(int i 0; i 26; i){if(a[i] ! 0){char c char(ia);couti:i c:c:a[i]/(s.size()*1.0)endl;sum; }}return sum; } //通过数组的方式构建哈夫曼树 void HufmanTree(Htnode h[],int n, int a[]){int i,j,max1,max2,x1,x2;for(i0;i2*n;i){h[i].weight0;h[i].parent-1;h[i].lchild-1;h[i].rchild-1;h[i].c\0;}for(i0;i26;i){if(a[i] ! 0){h[i].c i a;h[i].weight a[i]; }}for(i0;in-1;i){max11000,max21000;x1-1,x2-1; for(j0;jni;j){if(h[j].weightmax1 h[j].parent-1){max2max1;x2x1;max1h[j].weight;x1j;}else if(h[j].weightmax2 h[j].parent-1){max2h[j].weight;x2j;}}//根据每个节点信息, 将其信息存储到节点数组中h[x1].parentni; h[x2].parentni; h[ni].weighth[x1].weighth[x2].weight;h[ni].lchildx1;h[ni].rchildx2;}for (i0;i2*n-1;i){couth[i].weight h[i].parent h[i].lchild h[i].rchild h[i].cendl; } } //哈夫曼编码 //根据叶子节点的位置, 将其path路径01数字填充到编码数组中 void HuffmandeCode(Htnode h[], int n, int a[], Htcode hcode[]){HufmanTree(h, n, a);ofstream out;out.open(HuffmandeCode.txt, ios::out);int i,j;for(i0;in;i){j0;int parenth[i].parent;//记录当前节点的父亲 int ci;while(c!-1){//parent造成根节点不会被访问 hcode[i].bit[j]h[parent].lchildc?0:1;//从叶子节点到根节点, 应该使用栈结构 cparent;parenth[parent].parent;}hcode[i].startj-1;}for(i0;in;i){couth[i].c:;for(jhcode[i].start-1;j0;j--){couthcode[i].bit[j];outhcode[i].bit[j];}coutendl;}out.close(); } string load(){ifstream in(HuffmandeCode.txt);string str;char buffer[256];if(!in.is_open()){cout加载文件错误endl; return NULL;} cout 载入编码文件 endl;in.getline(buffer, 100, );return string(buffer); }//哈夫曼译码 void HuffmanenCode(string s,int n,Htnode h[]){int i0,j0,lchild2*n-2,rchild2*n-2;while(s[i]!\0){if(s[i]0){//出现的问题是,最初将lchild,rchild分开计算,导致在左右子树间相互变化出现//lchild,rchild不同同时表示同一个节点,最后想到lchildrchild就能解决问题lchildh[lchild].lchild;rchildjlchild;}if(s[i]1){rchildh[rchild].rchild;lchildjrchild;}if(h[lchild].lchild-1 h[rchild].rchild-1){couth[j].c;lchildrchild2*n-2;j0;}i;} } int main(){Htnode h[30];Htcode hcode[10];int a[26]{0};string s;int n type(a);coutn:nendl;HuffmandeCode(h, n, a, hcode);HuffmanenCode(load(),n,h);return 0; }上面有错, 还请指出, 如果认为我写的还不错, 还请点个赞, 多多支持一下, O(∩_∩)O~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/923756.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php网站访问很慢公司注册资金最低多少钱

Pass-14 (图片马,判断文件类型) 图片的格式在防护中通常是不会使用后缀进行判断的依据,文件头是文件开头的一段二进制码,不同类型的图片也就会有不同的二进制头。   JPEG (jpg),文件头:FF D…

2025上海骨灰盒哪里买优质厂家权威推荐榜:匠心工艺与品质服务之选

行业背景介绍 在殡葬文化中,骨灰盒承载着特殊的意义,它不仅是逝者最后的归宿,更是生者情感的寄托。随着社会的发展和人们观念的转变,对于骨灰盒的品质、工艺和文化内涵的要求也越来越高。上海作为国际化大都市,在…

实用指南:华为 HCIA-Datacom 备考:VRP 通用路由平台原理-实操

实用指南:华为 HCIA-Datacom 备考:VRP 通用路由平台原理-实操pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Co…

Voice Agent Camp 结营!完整项目名单公布丨超音速计划 2025

在过去的三个月里,17 个 Voice Agent 项目在超音速 Voice Agent Camp 里碰撞、打磨、成长。共同围绕「Voice First」理念,打造 AI 陪伴、个人助理、企业客服、AI 语音智能硬件等下一代产品。9 月 22 日,营员们带着阶…

详细介绍:SQL 执行异常排查 java.sql.SQLException:从 SQLException 说起

详细介绍:SQL 执行异常排查 java.sql.SQLException:从 SQLException 说起pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-famil…

做个外贸网站一般需要多少钱高校思政课网站建设

引言 在安卓开发中,视图绑定是一个关键的步骤,它允许开发者将布局文件中的视图组件与Activity或Fragment中的成员变量关联起来。这一机制不仅使得UI操作更加便捷,而且提高了开发效率。本文主要探讨了安卓开发中的一项重要技术——View Bindin…

2025上海寿衣哪里买权威推荐:优质供货商与暖心服务之选

上海寿衣厂家权威推荐:优质供货商与暖心服务之选 在中国传统文化中,寿衣作为人生最后一程的重要服饰,承载着对逝者的尊重与缅怀。随着社会对殡葬文化重视程度的提升,寿衣行业也逐步走向规范化、专业化发展。上海作…

AI 真能胜任专业工程师的工作吗?

AI 真能胜任专业工程师的工作吗? 近年来,人工智能(AI)的发展速度令人目不暇接,能够完成写诗、绘画、考试,甚至编写复杂的计算机代码。然而,有一个疑问始终在用户的心头环绕,得不到答案:这位“学霸”走出考场,…

容器中与内存相关的几个参数

在容器环境中,Cache内存使用率通常指的是容器内存中被操作系统用于缓存文件系统数据的部分。操作系统会利用未使用的内存来缓存磁盘上的数据,以提高文件读写性能。这部分内存虽然被标记为“已使用”,但实际上可以在…

求购做网站阿里巴巴上做网站

双线性插值公式 对于一个目的像素,设置坐标通过反向变换得到的浮点坐标为(iu,jv) (其中i、j均为浮点坐标的整数部分,u、v为浮点坐标的小数部分,是取值[0,1)区间的浮点数),则这个像素得值 f(iu,jv) 可由原图像中坐标为 (i,j)、(i1…

深入解析:【黑马程序员】后端Web基础--Maven基础和基础知识

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

一个网站如何做双语在国内做敏感网站

腾讯云幻兽帕鲁服务器4核16G、8核32G和16核64G配置可选,4核16G14M带宽66元一个月、277元3个月,8核32G22M配置115元1个月、345元3个月,16核64G35M配置580元年1个月、1740元3个月、6960元一年,腾讯云百科txybk.com分享腾讯云幻兽帕鲁…

php 简单下载数据库数据 导出cvs - 何苦

php 简单下载数据库数据 导出cvs<?php set_time_limit(0);// 下载文件名 $filename = date(Y-m-d H:i:s, time()); //输出Excel文件头,可把user.csv换成你要的文件名 header(Content-Type: application/vnd.ms-ex…

新乡营销型网站建设浦东高端网站开发

1. Homography 单应性概念 考虑 同一个平面(比如书皮)的两张图片&#xff0c;红点表示同一个物理坐标点在两张图片上的各自位置。在 CV 术语中&#xff0c;我们称之为对应点。 Homography 就是将一张图像上的点映射到另一张图像上对应点的3x3变换矩阵. 因为 Homography 是一个 …

上海城市建设官方网站如何用html做班级网站

转载&#xff1a;https://www.cnblogs.com/lnlvinso/p/8848883.html 结果&#xff1a;skiplist的高度是个随机值。 SkipList理解 记下自己对跳表SkipList的理解。 SkipList采用空间换时间的思想&#xff0c;通过增加数据间的链接&#xff0c;达到加快查找速度的目的。 数据库L…

网站与网址的区别制作平台网站方案

应用(Docker)使用WAF接入internet&#xff0c;nginx log 查不到用户的真实IP地址&#xff0c;于是修改nginx 设置&#xff0c;以下都是在linux下操作&#xff1a; 由于没有WAF权限&#xff0c;所以在 docker上启动了两个container&#xff0c;一个模拟WAF(r-proxy)&#xff0c…

OpenWRT中备份多个docker容器的脚本 -

在OpenWrt 24.10.1上测试通过 #!/bin/sh # OpenWrt Docker Container Backup Script # Backup docker container and copy to network storageecho "==========================================" echo &quo…

网站常用的优化方法有哪些做网站的策划需要做什么

1 二叉树的概念 二叉树是&#xff1a; 空树非空&#xff1a;根节点&#xff0c;根节点的左子树、根节点的右子树组成的。 二叉树定义是递归式的&#xff0c;因此后序基本操作中基本都是按照该概念实现的。 2 二叉树的遍历 2.1 前序、中序以及后序遍历 学习二叉树结构&#xf…

动态分区分配算法

首次适应算法[first fit] 每次都从低地址开始查找,找到对歌能满足大小的空闲分区 空闲分区以地址递增的次序排列,每次分配内存时顺序查找空闲分区链或表,找到大小能满足要求的第一个空闲分区 最佳适应算法[best fit…

上海殡葬一条龙服务权威推荐:寿衣、骨灰盒购买定制服务暖心陪伴与专业仪式之选

在生命的最后旅程中,一份专业、周到且充满人文关怀的殡葬服务,不仅是对逝者的尊重,更是对生者的慰藉。随着社会需求的不断提升,上海殡葬服务行业逐步走向规范化、专业化和人性化,各类服务机构不断优化服务流程,提…