1樓:匿名使用者
是我們大三做的一個上機題:
上機題:設電文字符集d及各字元出現的概率f如下:
d=(字元數n=8)
f=(%)
編寫完成下列功能的程式:
①構造關於f的huffman樹;
②求出並列印d總各字元的huffman編碼。
程式結構: 型別說明;
構造huffman樹的函式:huffman_tree(h[m 1]);
求huffman編碼的函式:huffman_code(code[n 1]);
main()
執行後,輸入8個字元(中間不能有空格,否則將空格視為字元處理),然後輸入概率(整數,空格或回車分隔。如果要支援浮點數,要改程式)然後enter,出現構造的霍夫曼節點和編碼,程式如下
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define n 8
#define m 2*n-1
#define max 32767
typedef char datatype;
typedef struct
huffm;
typedef struct
ctype;
void huffman_tree(huffm h[m 1])
printf("please enter the weight:\n");
for(i=1;i=n;i )
{scanf("%d",
有一電文共使用八種字元a,b,c,d,e,f,g,h,各符號在電文中出現頻率依次為5,25,3,6? 20
2樓:匿名使用者
總的方法:將權值最小的2個節點組成二叉樹如:最開始時權值最小的是a:
5%和c:4%,將其組成二叉樹,此時這兩個節點相當於合併成為一個節點,其權值是9%,.(9%)..
新節點1../.\..
a.c..(5%).
(4%).然後在重複上一過程,概率分別為:9%,25%,7%,9%,12%,30%,8%,裡面選擇最小的2個節點,是d:
7%和h:8%將其組成新節點,其權值是15%,以此類推,最後得出二叉樹:.100%..
0/.\1..43%.
57%..0/.\1.
0/.\1..18%.
b.g.27%..
0/.\1.0/.
\1..9%.e.
f.15%..0/.
\1.0/.\1..
a.c.d.
e.所以a:0000;b:
01;c:0001;d:1110;e:
1111;f:110;g:10
假設用於通訊的電文由7個字母組成{a,b,c,d,e,f,g},字母在電文中出現的頻率分別為0.17、0.09、0.12、0.06
3樓:商丘
哈夫曼編碼為:
a:101
b:001
c:100
d:0001
e:11
f:0000
g:01
帶權路徑長度wpl=(0.03+0.06)*4+(0.09+0.12+0.17)*3+(0.21+0.32)*2=2.56
4樓:
0.70
0.32 0.38
0.17 0.21
0.09 0.12
0.03 0.06
假設用於通訊的電文由7個字母組成{a,b,c,d,e,f,g},字母在電文中出現的頻率分別為0.17、0.09、0.12、0.
5樓:
0.70
0.32 0.38
0.17 0.21
0.09 0.12
0.03 0.06
有一份電文中共使用 6個字元:a,b,c,d,e,f,它們的出現頻率依次為2,3,4,7,8,9,試構造一棵哈夫曼樹
6樓:木乞翟
對於構造出的哈弗曼樹可以定義左孩子是0右孩子是1.則c的編碼就是01
字母a,b,c,d,e,f,g分別代表1至7中的數字,若
a b d e f g a b d e f g是3的倍數 1 2 3 4 5 6 7 28 所以c為1或4或7 字母 a,b,c,d,e,f,g分別代表1至7中的一個數字,c可取值有幾個 你好 c可以取1至7中的任何一個 所以c可取值有7個 祝你開心 樂理中a,b,c,d,e,f,g分別代表簡譜中的...
文言文中出現的幾個成語,古文中的成語
毛遂自薦 m o su z ji n 解釋 毛遂自我推薦。比喻自告奮勇,自己推薦自己擔任某項工作。出處 史記 平原君列傳 記載 秦軍圍攻趙國都城邯鄲,平原君去楚國求救,門下食客毛遂自動請求一同前去。到了楚國,毛遂挺身而出,陳述利害,楚王才派兵去救趙國。示例 我作 居然被校長核准了。這樣才勉強捱過難關...
1 文中舉木板的例子,意在說明什麼?請用文中的語句回答
文中舉木板的例子意在說明 如果我們能對一切事物都加以分析比較,精思明斷,則人人都可 掌握任何工藝。我覺得魯濱孫是個聰明勇敢,敢於冒險,有自己的目標,生命頑強的人。小學六年級語文第二單元下冊的測試題 我和你一樣,也讀六年級,不過我們的語文書還有一個單元就全部學完了。第二單元其實很簡單,首先是詞語積累,...