102 人解决,127 人已尝试。
139 份提交通过,共有 428 份提交。
3.3 EMB 奖励。
单点时限: 2.0 sec
内存限制: 256 MB
给定一组信元符号出现的频率,按照从小到大的顺序排好,将信源符号分化为两大组,使两组的频率和近于相同,并各赋予一个二元码符号0
和1
。只要组内有两个或两个以上符号,就以同样的方法重复以上分组,以此确定这些符号的连续编码数字。依次下去,直至每一组只剩下一个信源符号为止,按照信元所在分组的赋值顺序组合成为该信元的编码,分组过程中不调整信元次序。
例如,输入四个信元的频次分别为1
,对第一组继续按照和接近相同分组,分为第一组为01
,再对第一组分组,第一组000
,001
。
注意:如果输入四个信元的频次分别为
第
每组测试数据按如下格式输入:
第一行:一个整数n,表示输入信元个,
第二行:int
类型范围。
对于每组测试数据,输出一行问题的编号(case #0:
等),然后按照输入的顺序输出相应频次和信元编码,两个数之间用 :
分隔,每行一个。
3 2 0 1 4 2 4 8 16 6 20 20 20 20 20 20
case #0: 0:0 1:1 case #1: 2:000 4:001 8:01 16:1 case #2: 20:00 20:010 20:011 20:10 20:110 20:111
102 人解决,127 人已尝试。
139 份提交通过,共有 428 份提交。
3.3 EMB 奖励。