九度oj-1172-哈夫曼樹
哈夫曼樹
(huffman tree)
:給定n
個權值作為
n個葉子結點,構造一棵二叉樹,若帶權路徑長度達到最小,稱這樣的二叉樹為最優二叉樹,即哈夫曼樹
這題可以建樹,也可以不建樹。
建樹:
#include#include#include#define maxvalue 0x7fffffff
struct huffman
list[5000];
int main()
int main()
zimu[30];
struct cam2
list[60];
void init()
void huffmantree()
; //26個字母的頻度
for(i=0;i<60;i++)
list[i].parent=list[i].lchild=list[i].rchild=-1;
for(i=0;i<26;i++)
list[i].weight=pindu[i];
for(i=0;i<25;i++)
int main()
{ int i,j;
int ans,len;
char str[1000];
int k1,k2,flag;
printf("welcome to cambridgeacm\n");
init();
huffmantree();
huffmanbianma();
printf("輸入1時執行編碼\n");
printf("輸入2時執行解碼\n");
while(scanf("%d",&ans)!=eof)
{ switch(ans)
{ case 1:
{printf("請輸入一段字串\n");
九度OJ1172 哈夫曼樹
題目描述 哈夫曼樹,第一行輸入乙個數n,表示葉結點的個數。需要用這些葉結點生成哈夫曼樹,根據哈夫曼樹的概念,這些結點有權值,即weight,題目需要輸出所有結點的值與權值的乘積之和。輸入 輸入有多組資料。每組第一行輸入乙個數n,接著輸入n個葉節點 葉節點權值不超過100,2 n 1000 輸出 輸出...
九度OJ 1172 哈夫曼樹
由於建立的哈夫曼樹不唯一,所以機試多考察哈夫曼樹的帶權路徑長度和,如此題。此問題最終轉化為利用堆模擬建樹過程,求出非葉節點的權值和 該哈夫曼樹的帶權路徑長度和 無需作出哈夫曼樹的具體結構體 收穫如下 關於哈夫曼樹 該樹非葉節點的權值和 該哈夫曼樹的帶權路徑長度和 關於堆排序 堆排序建堆o n log...
九度OJ 1172 哈夫曼樹
哈夫曼樹,第一行輸入乙個數n,表示葉結點的個數。需要用這些葉結點生成哈夫曼樹,根據哈夫曼樹的概念,這些結點有權值,即weight,題目需要輸出所有結點的值與權值的乘積之和。輸入有多組資料。每組第一行輸入乙個數n,接著輸入n個葉節點 葉節點權值不超過100,2 n 1000 輸出權值。5 1 2 2 ...