关闭

POJ 1750 Dictionary(水~)

363人阅读 评论(0) 收藏 举报
分类:

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
1

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:314011次
    • 积分:18521
    • 等级:
    • 排名:第490名
    • 原创:1603篇
    • 转载:0篇
    • 译文:0篇
    • 评论:58条
    最新评论