Description
给出一些单词,按规律输出,规律是让后面一个字符串和前面一个字符串比较,如果前几位相同的字符数量大于空格的数量,那么空格的数量加1,如果前几位相同字符数量小于空格的数量,那么空格数量变为相同字符的数量
Input
一些单词,以文件尾结束输入
Output
按规律输出单词
Sample Input
a
ant
antique
amaze
bargain
bridge
bride
bribe
born
bucket
tart
tan
tram
trolley
t
try
trial
zed
double
dorm
do
dormant
donate
again
agony
boost
back
born
Sample Output
a
ant
antique
amaze
bargain
bridge
bride
bribe
born
bucket
tart
tan
tram
trolley
t
try
trial
zed
double
dorm
do
dormant
donate
again
agony
boost
back
born
Solution
字符串处理,主要在于怎么求出每个单词前的空格数count,根据题意易得当相邻两串公共前缀大于count时,count++,否则count=公共前缀长度,以此类推即可
Code
#include<stdio.h>
#include<string.h>
char str[100001][12];
int cmp(char a[],char b[])//计算两个串的公共前缀长度
{
int i,len1,len2,count=0;
len1=strlen(a);
len2=strlen(b);
for(i=0;i<len1&&i<len2;i++)
if(a[i]==b[i])
count++;
else
break;
return count;
}
int main()
{
int i,j,k,count;
fscanf(stdin,"%s",str[0]);
printf("%s\n",str[0]);//第一个单词直接输出即可
count=0;//初始空格数为0
i=1;
while(fscanf(stdin,"%s",str[i])!=EOF)
{
k=cmp(str[i],str[i-1]);
if(k>count)//若两串公共前缀长度大于count则count++
count++;
else//否则令count=k
count=k;
for(j=0;j<count;j++)//输出count个空格
printf(" ");
printf("%s\n",str[i]);//输出单词
i++;
}
return 0;
}