POJ 1750 Dictionary(水~)

470 篇文章 3 订阅

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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值