一个关於C语言Uncompress的问题

来源:百度知道 编辑:UC知道 时间:2024/06/17 09:58:36
以下是问题原文:
对于不含数字的文章有一种简单的压缩法,方法是用一个串行(list)来记录曾经出现过的字(word)。压缩的过程如下:如果遇到非英文字母的字符,该字符直接复制到压缩后的档案。当遇到一个字时,如果这一个字是第一次出现,除了把这个字复制到压缩后的档案之外,并把他加到串行的开头。如果这一个字不是第一次出现,则这个字不会复制到压缩后的档案,而是把这个字在串行中的位置复制到压缩后的档案,并且在串行中把这个字移到串行的开头。串行的开头位置为1。
现在你的任务是给你一篇用上述方法压缩后的文章,请你把他还原回来。你可以假设所有的字都不会超过50个字符,并且未压缩的文章不含有数字。另外,字的定义为:最长的连续的英文字母(A~Z, a~z)。例如:
• x-ray 包含了2个字:x 和 ray
• Mary\'s 包含了2个字:Mary 和 s
• It\'s a winner包含了4个字:It、s、a 和 winner
并且字有分大小写,因此abc 和Abc是不同的2个字。在本问题中,不同的字的数目并无上限。
Input
只有一组测试资料。内容为多列压缩后的文章。最后一列仅含有一个0,代表输入结束(此列无输出)。请参考Sample Input。
Output
对于输入的每一列,输出解压缩后的文章。请参考Sample Output。
Sample Input
Dear Sally,

Please, please do it--1 would 4
Mary very, 1 much. And 4 6
8 everything in 5\'s power to make
14 pay off for you.

-- Thank 2 18 18--
0
Sample Output
Dear Sally,

Please, please do it--it would please
Mary very, very muc

于不含数字的文章有一种简单的压缩法,方法是用一个串行(list)来记录曾经出现过的字(word)。压缩的过程如下:如果遇到非英文字母的字符,该字符直接复制到压缩后的档案。当遇到一个字时,如果这一个字是第一次出现,除了把这个字复制到压缩后的档案之外,并把他加到串行的开头。如果这一个字不是第一次出现,则这个字不会复制到压缩后的档案,而是把这个字在串行中的位置复制到压缩后的档案,并且在串行中把这个字移到串行的开头。串行的开头位置为1。
现在你的任务是给你一篇用上述方法压缩后的文章,请你把他还原回来。你可以假设所有的字都不会超过50个字符,并且未压缩的文章不含有数字。另外,字的定义为:最长的连续的英文字母(A~Z, a~z)。例如:
• x-ray 包含了2个字:x 和 ray
• Mary\'s 包含了2个字:Mary 和 s
• It\'s a winner包含了4个字:It、s、a 和 winner
并且字有分大小写,因此abc 和Abc是不同的2个字。在本问题中,不同的字的数目并无上限。
Input
只有一组测试资料。内容为多列压缩后的文章。最后一列仅含有一个0,代表输入结束(此列无输出)。请参考Sample Input。
Output
对于输入的每一列,输出解压缩后的文章。请参考Sample Output。
Sample Input
Dear Sally,

Please, please do it--1 would 4
Mary very, 1 much. And 4 6
8 everything in 5\'s power to make
14 pay off for you.

-- Thank 2 18 18--
0
Sample Output
Dear Sally,

Please, please do it--it would please
Mary very, very much. And Mary would
do