编程题:压缩比
对于给定的文本内容,可以采用最短等长编码,也可以采用最优前缀编码,请计算最优前缀编码相对于最短等长编码的压缩比。这里压缩比定义为$$(n-m)/n*100$$%,其中n表示采用最短等长编码所得的总码长,m表示采用最优前缀编码所得的总码长。文本内容由英文字母构成,这里约定不区分字母的大小写。
### 输入格式:
测试数据有多组,处理到文件尾。每组测试数据在一行上输入一个字符串(仅由大小写英文字母构成且长度不超过360,至少包含2种字母)表示文本内容。
### 输出格式:
对于每组测试数据,输出最优前缀编码相对于最短等长编码的压缩比,结果保留2位小数。
### 输入样例:
in
AcBDaCAA
eAbCDaAAA
### 输出样例:
out
12.50%
37.04%
### 提示:
对于样例1,不区分大小写共4种字母,若使用最短等长编码,则可用2位的00、01、10、11作为A、B、C、D的编码,得到编码为0010011100100000,总码长为16;若用最优前缀编码,则可用0、110、10、111作为A、B、C、D的编码,得到编码为01011011101000,总码长为14,压缩比=(16-14)/16*100%=12.50%。
### 来源:
黄龙军, 等. 数据结构与算法(Python语言描述),上海: 上海交通大学出版社, 2023. (In Press)
答案:若无答案欢迎评论
### 输入格式:
测试数据有多组,处理到文件尾。每组测试数据在一行上输入一个字符串(仅由大小写英文字母构成且长度不超过360,至少包含2种字母)表示文本内容。
### 输出格式:
对于每组测试数据,输出最优前缀编码相对于最短等长编码的压缩比,结果保留2位小数。
### 输入样例:
in
AcBDaCAA
eAbCDaAAA
### 输出样例:
out
12.50%
37.04%
### 提示:
对于样例1,不区分大小写共4种字母,若使用最短等长编码,则可用2位的00、01、10、11作为A、B、C、D的编码,得到编码为0010011100100000,总码长为16;若用最优前缀编码,则可用0、110、10、111作为A、B、C、D的编码,得到编码为01011011101000,总码长为14,压缩比=(16-14)/16*100%=12.50%。
### 来源:
黄龙军, 等. 数据结构与算法(Python语言描述),上海: 上海交通大学出版社, 2023. (In Press)
答案:若无答案欢迎评论