1358 - 算法6-12:自底向上的赫夫曼编码

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB
在通讯领域,经常需要将需要传送的文字转换成由二进制字符组成的字符串。在实际应用中,由于总是希望被传送的内容总长尽可能的短,如果对每个字符设计长度不等的编码,且让内容中出现次数较多的字符采用尽可能短的编码,则整个内容的总长便可以减少。另外,需要保证任何一个字符的编码都不是另一个字符的编码前缀,这种编码成为前缀编码。
而赫夫曼编码就是一种二进制前缀编码,其从叶子到根(自底向上)逆向求出每个字符的算法可以表示如下:

<span style="font-family:宋体;">在本题中,读入</span><span>n</span><span style="font-family:宋体;">个字符所对应的权值,生成赫夫曼编码,并依次输出计算出的每一个赫夫曼编码。</span>

<span></span>

题目输入

输入的第一行包含一个正整数n,表示共有n个字符需要编码。其中n不超过100。
第二行中有n个用空格隔开的正整数,分别表示n个字符的权值。

题目输出

共n行,每行一个字符串,表示对应字符的赫夫曼编码。

输入/输出样例

输入格式

8
5 29 7 8 14 23 3 11

输出格式

0110
10
1110
1111
110
00
0111
010