在通訊領(lǐng)域,經(jīng)常需要將需要傳送的文字轉(zhuǎn)換成由二進(jìn)制字符組成的字符串。在實(shí)際應(yīng)用中,由于總是希望被傳送的內(nèi)容總長盡可能的短,如果對每個(gè)字符設(shè)計(jì)長度不等的編碼,且讓內(nèi)容中出現(xiàn)次數(shù)較多的字符采用盡可能短的編碼,則整個(gè)內(nèi)容的總長便可以減少。另外,需要保證任何一個(gè)字符的編碼都不是另一個(gè)字符的編碼前綴,這種編碼成為前綴編碼。
而赫夫曼編碼就是一種二進(jìn)制前綴編碼,其從葉子到根(自底向上)逆向求出每個(gè)字符的算法可以表示如下:
在本題中,讀入n個(gè)字符所對應(yīng)的權(quán)值,生成赫夫曼編碼,并依次輸出計(jì)算出的每一個(gè)赫夫曼編碼。