//霍夫曼算法,构造霍夫曼树
#include <iostream>
using namespace std;
#define MAXSIZE 16
struct HaffNode
{
int weight; //权值
int parent; //双亲下标
int lChild; //左孩子下标
int rChild; //右孩子下标
};
void selectMinWeightIndex(HaffNode* arr, int i, int& minIndex01, int& minIndex02)
{
//找到第一个最小值
for (int j = 1; j <= i - 1; j++)
{
if (arr[j].parent == 0) { minIndex01 = j; }
}
for (int j = 1; j <= i - 1; j++)
{
if (arr[j].parent == 0)
{
if (arr[minIndex01].weight > arr[j].weight) { minIndex01 = j; }
}
}
//找到第二个最小值
for (int j = 1; j <= i - 1; j++)
{
if (arr[j].parent == 0 && j != minIndex01) { minIndex02 = j; }
}
for (int j = 1; j <= i - 1; j++)
{
if (arr[j].parent == 0 && j != minIndex01)
{
if (arr[minIndex02].weight > arr[j].weight) { minIndex02 = j; }
}
}
}
void createHaffmanTree()
{
HaffNode* arr;
arr = new HaffNode[MAXSIZE]; //总共有2n-1个结点,开辟2n大小的空间,0号位置不存储数据
for (int i = 1; i <= MAXSIZE / 2; i++) { cin >> arr[i].weight; arr[i].parent = arr[i].lChild = arr[i].rChild = 0; } //初始化数组
for (int i = MAXSIZE / 2 + 1; i <= MAXSIZE - 1; i++)
{
//找到两个最小值
int minIndex01, minIndex02;
selectMinWeightIndex(arr, i, minIndex01, minIndex02);
arr[i].weight = arr[minIndex01].weight + arr[minIndex02].weight;
arr[i].parent = 0;
arr[i].lChild = minIndex01;
arr[i].rChild = minIndex02;
arr[minIndex01].parent = arr[minIndex02].parent = i;
if (i == MAXSIZE - 1) { arr[i].parent = 0; }
}
for (int i = 1; i <= MAXSIZE - 1; i++)
{
cout << i << ": " << "权值:" << arr[i].weight << "\t";
cout << "双亲下标:" << arr[i].parent << "\t";
cout << "左孩子下标:" << arr[i].lChild << "\t";
cout << " " << left << setw(4) << "右孩子下标:" << arr[i].rChild << endl;
}
}
int main() {
createHaffmanTree();
system("pause");
return 0;
}
文章浏览阅读1.3k次。Transformer使用Self Attention机制解决了传统的基于RNN的Seq2Seq模型难以处理长序列的句子,存在信息丢失情况以及无法并行训练(时序依赖)的问题。Transformer包含Encoder和Decoder两部分,其中Encoder单元和Decoder单元重复了N次(N可以设置,论文中N值为6)。_seq2seq mindspore
文章浏览阅读812次,点赞8次,收藏30次。希望能帮助大家尽快入门。
文章浏览阅读4.3k次,点赞7次,收藏78次。(1)架构介绍(A)Camera的框架分为Kernel部分和Hal部分Kernel部分:image sensor driver——负责具体型号的sensor的id检测,上电,以及在preview、capture、初始化、3A等等功能设定时的寄存器配置;ISP driver——通过DMA将sensor数据流上传;Hal部分:imageio——主要负责数据buffer上传的pipe;drv——包含imgsensor和isp的hal层控制;feature io——包含各种3A等性能配置;_mtk imageio
摘要:相机成像原理涉及点在不同坐标系中的矩阵变换,包括世界、相机、像平面和像素平面坐标系。具体变换关系可用矩阵表达,可求得单位向量。
文章浏览阅读4.4k次,点赞4次,收藏12次。SE 也就是 Secure Element,译为 “安全元素”主要应用场景在 手机手表交通卡、门禁、虚拟钱包、虚拟SIM卡,以及其他身份认证的且对安全级别有一定要求的业务。_sim trasmit apdu
文章浏览阅读5.1k次。Flutter自带WebView不想说啥了,就这样吧。反正一番周折之后选择使用第三方的InAppWebView。看源码可以看出本质上是用了Platform调回原生平台的webview,但是xing nen_inappwebview
文章浏览阅读9.1k次,点赞32次,收藏117次。1 .实验目的学习如何利用消息缓冲队列进行进程间的通信,并加深对消息缓冲队列通信机制的理解。2 .实验内容(1) 了解系统调用msgget()、msgsnd()、msgrcv()、msgctl()的功能和实现过程。(2) 编写一段程序,使其用消息缓冲队列来实现父进程和子进程之间的通信。父进程先建立一个关键字为MSGKEY(如75)(即#define MSGKEY 75)的消息队列,..._消息缓冲队列。使用系统调用msgget ()、msgsnd ()、msgrcv ()及msgctl () 编制消
文章浏览阅读6.5k次,点赞2次,收藏23次。前言: mp4文件目前已经成为了流媒体音视频行业的通用标准文件格式,它是基于mov格式基础上演变来的,特别适合多平台播放,录制一次,多个平台都可使用。但是,由于mp4格式相对比较复杂,直到mp4v2这个开源工程的出现,解决了这个问题。 通常,我们在使用mp4文件时,会遇到两个问题:如何从已有的mp4文件中抽取音视频数据帧;如何将音视频数据帧录制成mp4文件,并保持音视频同步。 上..._mp4v2 同步音视频
文章浏览阅读615次。使用UIKit开发界面众所周知,SpriteKit并不提供各种UI常见的组件,连基本的Button都没有,唯一有的文本显示组件Label还不支持多行。那么到底该用什么来为基于SpriteKit的游戏开发界面呢?可以肯定的回答:用UIKit。大家都这么想了,可是具体该怎么做,却不是很清楚。 如何把UIKit界面元素嵌入场景界面遇到的第一个问题是,如何把UIKit组件加入到场景中。UI
文章浏览阅读1.5k次,点赞2次,收藏8次。思路:从一个用户(本例为“张佳玮”)出发,来爬取其粉丝,进而爬取其粉丝的粉丝…先来观察网页结构:审查元素:可以看到用户“关注的人”等信息在网页中用json格式保存在data中。当把鼠标移到列表中的某个名字上时,可以看到浏览器产生了一个Ajax请求:请求的url后面加上了很长的一串查询字符串。并且json中也请求了许多详细的信息。这与该用户的主页基本是对应的:实战我们..._运用分布式框架抓取知乎网站用户的信息,包括用户的姓名(昵称)、一句话介绍、部分
文章浏览阅读3.9k次,点赞8次,收藏35次。文章目录23种设计模式——装饰者模式1、装饰者模式概述2、装饰者模式的结构3、装饰者模式的实现4、装饰者模式的应用场景23种设计模式——装饰者模式1、装饰者模式概述背景有些人为了早上多睡一会,就会用方便的方式解决早餐问题。有些人早餐可能会吃煎饼,煎饼中可以加鸡蛋,也可以加香肠,但是不管怎么“加码”,都还是一个煎饼。在现实生活中,常常需要对现有产品增加新的功能或美化其外观,如房子装修、相片加相框、咖啡加调料等,都是装饰器模式。装饰者模式的定义装饰者(Decorator)模式的定义:指在不改_装饰者模式
文章浏览阅读6.2k次。【100个】关于网页制作论文参考文献大全汇总,作为大学生的毕业生应该明白了网页制作参考文献有哪些,收集好参考文献后的网页制作论文写作起来会更轻松!一、网页制作论文参考文献范文[1]开展电脑社团活动培养学生信息素养——中学生网页制作社团活动报告.童宇阳,2009第九届中国教育信息化创新与发展论坛[2]项目教学法在《网页制作基础》课程中的应用.胡永刚,20072007无锡职教教师论坛[3]基于SVG的..._计算机网页制作相关参考文献