輸入乙個整數n,n<100,下面n行分別為n個字元及其出現頻率
輸出所有字元的頻率與其編碼長度的乘積之和
輸入:
5
a 35
b 10
c 20
d 20
_ 15
輸出:
225
輸入:
3
x 20
y 50
z 5
輸出:
100
整體思路:
class node
node() {}
};
注意點:
void printf(int a)
if(tree[a].rchild != -1)
}
源**:
#include#include#include#define max 0x7fffffff
using namespace std;
class node
node() };
vectortree;
int leaf_n;//葉節點的個數
//結點結構
//選出沒有父母且權重最小的結點
int min(int last)
} return mark;
}//連線結點
void connect(int a, int b, int c)
//選擇兩個沒有父母且權重最小的兩個結點的方法實現
void select()
select();
//printf(tree.size() - 1);
cout << cal() << endl;
system("pause");
return 0;
}
哈夫曼編碼問題
1 介紹 在計算機資料處理中,哈夫曼編碼使用變長編碼表對源符號 如檔案中的乙個字母 進行編碼,其中變長編碼表是通過一種評估 符號出現機率的方法得到的,出現機率高的字母使用較短的編碼,反之出現機率低的則使用較長的編碼,這便使編碼之後的字串的平均長度 期望值降低,從而達到無失真壓縮資料的目的。例如,在英...
哈夫曼編碼問題
給定乙個數字n,代表有n種不同的字元,已知每種字元的出現次數,現在要求你設計一種編碼,使得任意乙個編碼都不是另外乙個編碼的字首,並且使得這些字元經過編碼壓縮之後的總長度最小 乙個數字n 代表有多少種不同的字元 0 n 1000 n個數字 每個數字代表一種字元的出現次數 乙個數字,代表總的編碼長度 5...
哈夫曼編碼 哈夫曼樹
1.定義 哈夫曼編碼主要用於資料壓縮。哈夫曼編碼是一種可變長編碼。該編碼將出現頻率高的字元,使用短編碼 將出現頻率低的字元,使用長編碼。變長編碼的主要問題是,必須實現非字首編碼,即在乙個字符集中,任何乙個字元的編碼都不是另乙個字元編碼的字首。如 0 10就是非字首編碼,而0 01不是非字首編碼。2....