文件压缩

文件压缩 

http://acm.fzu.edu.cn/problem.php?pid=1409


Time Limit:1sMemory limit:32M
Accepted Submit:330Total Submit:1084

提高文件的压缩率一直是人们追求的目标。近几年有人提出了这样一种算法,它虽然只是单纯地对文件进行重排,本身并不压缩文件,

但是对经这种算法调整后的文件进行压缩,在大多数情况下都能获得比原来更大的压缩率。
该算法具体如下:对一个长度为n的字符串S,首先根据它构造n个字符串,其中第i个字符串由S向左循环移位i-1次得到(见示例)。

然后把这n个字符串按照首字符从小到大排序。如果两个字符串的首字符相同,则它们的相对位置不变。接着把排序后的字符串的尾字符

依次连成一个新的字符串S'。它的长度仍为n,而且显然是S中的字符的一种重排。最后输出S'以及S的首字符在S'中的序号p。例如:

S = example

1、构造n个字符串:
example
xamplee
ampleex
mpleexa
pleexam
leexamp
eexampl	
2、将字符串排序:
ampleex
example
eexampl
leexamp
mpleexa
pleexam
xamplee
3、输出:
S' = xelpame
p = 7

由于英语单词构造的特殊性,某些字母出现的频率很高,因此在 中相同的字母有很大几率排在一起,从而提高 的压缩率。虽然这种算法

利用了英语单词的特性,然而在实践中,人们发现它几乎适用于所有类型的文件压缩。

请你编写一个程序模拟该算法的运行过程,输入字符串S,输出S'和p。

输入输出格式

输入包含两行。第一行为一整数n,1<=n<=10000,表示S的长度;第二行为字符串S,字符串全部由小写字母组成,没有其它字符。

输出两行,第一行为S',第二行为整数p。

输入样例

7
example

输出样例

xelpame
7

一题有关字符串排序的问题,字符串的从小到大排序,有一个问题就是,排序了以后,根据规律,

要输出的其实就是当前这个字符串在原串中的前一个字符,所以排序了以后还要记下当前字符在

原串中的位置,可以用一个结构体来实现这个功能。又由于还要记下原串中的第一个字符在经过

排序后的位置,因为输出第一个字符的时候其实也就是对它的后面一个字符的排序,所以只要标

记它的后面的一个字符就可以了。结构体初始化为当前串的长度,依次为012…n,然后对

结构体进行排序,以字符串的ASCII码大小进行排序

排序的函数:stable_sort(Node,Node+n,up)stable_sortsort函数的区别是,stable_sort保持了原来的

数的相对位置,他们都在#include<algorithm>这个头文件中

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值