-->
当前位置:首页 > 题库 > 正文内容

函数题:多行字符串的排序与压缩

Luz3年前 (2022-03-15)题库605
本题要求实现不超过N个字符串的排序与压缩的函数。先调用 ReadString函数输入n个只包含英文字母的字符串,然后调用Sort函数对这n个字符串进行排序,再调用Zip函数对这n个字符串分别进行压缩,压缩规则是:如果某个字符x连续出现m(m>1)次(m可能是个很大的数),则将这m个字符x替换为mx的形式;否则保持不变。

### 函数接口定义:
c++
void ReadString( char (*s)[MAXS], char ** patr, int n ); //输入n个字符串
void Sort(char **s, int n ); //按字典顺序进行排序
void Zip( char **ps,int n); //对字符串中相同的相邻字符进行压缩


### 裁判测试程序样例:
c++
#include <stdio.h>
#include <string.h>
#define MAXS 20000
#define N 30
void ReadString( char (*s)[MAXS], char ** patr, int n ); //输入n个字符串
void Sort(char **s, int n ); //按字典顺序进行排序
void Zip( char **ps,int n); //对字符串中相同的相邻字符进行压缩

int main()
{
char s[N][MAXS], *patr[N];
char **ppar=patr;
int i,n;
scanf("%d",&n);
getchar();
ReadString(s,ppar,n);
Sort(ppar,n);
printf("排序前的字符串:\n");
for(i=0;i<n;i++)
printf("%s\n", *(s+i));
printf("排序后的字符串:\n");
for(;ppar<patr+n;ppar++)
printf("%s\n", *(ppar));

ppar=patr;
Zip(ppar,n);
printf("压缩后的字符串:\n") ;
for(;ppar<patr+n;ppar++)
printf("%s\n", *(ppar));

return 0;
}
/* 请在这里填写答案 */


### 输入样例:

in
4
aadcccbbb
aabcccddd
aaacccddd
aaaccbccc


### 输出样例:

out
排序前的字符串:
aadcccbbb
aabcccddd
aaacccddd
aaaccbccc
排序后的字符串:
aaaccbccc
aaacccddd
aabcccddd
aadcccbbb
压缩后的字符串:
3a2cb3c
3a3c3d
2ab3c3d
2ad3c3b







答案:若无答案欢迎评论

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。