- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想在没有排序的情况下实现霍夫曼。这个想法是我添加前两个元素并添加在数组的最后一个获得的结果。例如。
(1) 数据[256]= {1 2 3 4 5}。我们添加前两个元素,我们得到“3”,我们把它放在数组的最后,就像这样 {1 2 3 4 5 3}。这是第一次处决。我的逻辑data[data_size].freq=data[f].freq+data[s].freq; data_size++;
做好。
(2) 现在在第二次执行中,我想将上一次加法获得的结果(位于 locataion data_size)和数组的下一个元素相加。所以这样做的逻辑必须是这样的:data[data_size].freq=data[data_size].freq+data[s].freq;
现在结果将是 {1 2 3 4 5 3 **6**}
。我不需要排序,这必须在没有任何排序的情况下实现。添加的元素必须留在数组的最后一个位置。但是加法必须始终在 data[data_size].freq
处的元素之间(这是通过在第一次执行时将前两个元素相加获得的,并且在第一次执行之后它必须是最后一个元素相加的结果通过添加两个元素中的第一个和奇数位置的元素获得,我的意思是“s”)和data[s].freq
(它是“s”位置的元素)。
我有这个想法,但问题是如果我在前两个位置添加(对于第一次执行,我通过在索引 0 和 1 处添加元素来获得数组索引最后一个元素获得的第一个元素),例如:
newItem.freq = data[i].freq + data[j].freq; data[dataSize++]=newItem;
现在我要做的是:
newItem.freq = data[dataSize].freq + data[j].freq;
here i have problem in writting it's code.
最佳答案
你应该使用优先队列。所有的元素都排在优先队列的第一位。然后,在每一步中,取两个最小的元素,将其合并,并将结果推回队列。
关于c - 没有排序的霍夫曼实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21378703/
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我这样定义了一个二叉树: struct btree { int x; btree* left_child = nullptr; btree* right_child = nul
我有这个霍夫曼代码,旨在返回数组中每个字母的霍夫曼代码并按字母顺序打印它们。问题是它不生成任何输出,而是继续处理,直到我手动退出它。谁能帮我找出错误吗?我认为我的代码是正确的,但我不知道无限循环从何而
动机 想象一下一个哈夫曼压缩文件被部分下载,就像在p2p软件中一样,所以我们首先为整个文件分配磁盘空间,然后开始随机下载文件块。其中一个哈夫曼密码(但我们不知道是哪一个)是一个结束密码,所以如果这个密
以下 block 由霍夫曼 block 标记嵌套 -HUFF---------------------------------------------------------------------0
我是一名优秀的程序员,十分优秀!