首页 > 试题广场 >

节约字节

[问答题]

题目标题:

节约字节

题目描述:

John 在做一个项目,项目对存储容量有着近乎苛刻的要求,为此John需要对一些东西进行压缩存储。John的第一个问题就是一大堆的字符串,存储它们太占地方了,为此他想了一个办法:如果字符串具有相同的后缀,那么就把这么字符串的相同后缀和在一起,这样就能节约一点空间了。比如说有三个字符串分别为"john""ajohn""bjohn",这样它们有相同的后缀"john",这时候只需存储一个后缀"john",节省了8个字母的存储空间。请编写程序计算对于不同的字符串能节省的存储空间?

输入描述:

第一行是一个整数k,表示可以输入多少个测试用例.每个测试用例占n+1行即每个测试用例的第一行为一个整数n1<=n<=20),从第二行开始依次为n个字符串,字符串由英文字母组成,大小写敏感。

输出描述:

一个测试用例输出完毕之后,换行输出这个测试用例节省了多少存储空间。

样式输入:

1

3

john

ajohn

bjohn

样式输出:

save 8 characters

#include<stdio.h>
#include<string.h>
int main()
{
char a[20][30];
int cas,i;
scanf("%d",&cas);
while(cas--)
{
int n,count=0;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%s",a[i]);
for(i=1;i<n;i++)
{
if(strstr(a[i],a[0])!=NULL)
count++;
}
int l=strlen(a[0]);
printf("save %d characters",count*l);
}
return 0;
}

发表于 2017-05-15 00:23:44 回复(0)