回 帖 发 新 帖 刷新版面

主题:[讨论]出题:“中华压缩软件”

《中华压缩软件》是XXX公司的新产品,目的是为了让中国的软件“扬眉吐气”。《中华压缩软件》使用3种方法来压缩文件
1.原文记录即将来的文件原封不动地记录下来。原文每七位记录为一个字节,记录后的每一个字节首位都是1。该段最后无法填充满一个字节时,在最后补"0",下一个字节是“128+最后一个字节的实际长度”。例如:
数据 10110101 11011101记录为:
11011010 11110111 11010000 1[i]0000011[/i]
2.单字压缩:每一个字节的二进制如下:
[u]1 [该字的内容] [该字的重复次数] [/u]例如,数据 011111111 11000000记录如下:
10000001 11001001 100000110
3.四字压缩:每2个字节的二进制如下:
[u]1 [四个字] [重复次数(占用11位)][/u] 例如:数据0010重复100次的压缩为:
10010000 01100100 
此外,为了方便在各种方法之间进行转换,《中华压缩软件》还提供“转换字”。转换字首位是0,实际数值是压缩方法的代号(1,2,3)。
压缩文件开始时必须写一个代号(如00000001)。压缩中间转换模式也写代号。

任务:

1、压缩文件。Zip.hsk中记录有两行,第一行是文件路径,第二行是输出路径,输入文件大小不超过50K。要求输出文件必须可以解压成原文件,且输出文件大小不得超过原文件(如果超过,在50字节以内)。

2、解压。Unzip.hsk中有压缩文件的路径和输出路径,你必须将压缩文件进行正确的解压。解压时速度高于1KB/s。

3、最佳压缩。任务同1,但是任务文件为Best.hsk,要求输出文件的大小是所有正确的压缩中最小的。

回复列表 (共1个回复)

沙发

3.DP,状态不仅需要储存当前状态的已写字节数,还要记录一些附加信息

我来回复

您尚未登录,请登录后再回复。点此登录或注册