| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1830 人关注过本帖
标题:新手求助共同的前缀
只看楼主 加入收藏
o670783915
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2015-10-22
结帖率:33.33%
收藏
 问题点数:0 回复次数:5 
新手求助共同的前缀
Description
给你K个字符串,请求出它们的最长公共前缀。输入第一行是一个整数N,表示测试样例的个数。每个测试样例的第一行是一个整数K(2 <= k <= 20),表示有多少个字符串;以后每行是一个字符串,每个字符串的长度不超过200个字符。 输出每行输出一个样例的结果。先输出“Case #: ”,其中’#’为样例的序号(从1开始),冒号为英文冒号,后接一个空格;然后是对应样例的结果。如果没有公共前缀,则无需输出前缀,但Case信息仍需要输出。  
  
Sample Input  
2
3
ACD
ACDEF
ACDFE
2
ABC
BCD
 
能不能就告诉我算法或思想就行,谢谢。
搜索更多相关主题的帖子: 字符串 英文 信息 
2015-10-22 10:40
frognidie
Rank: 1
等 级:新手上路
帖 子:8
专家分:6
注 册:2013-8-12
收藏
得分:0 
根据整数的数目 申请字符串数组 把数据存在里面后 比较下 应该行了
2015-10-22 11:20
o670783915
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2015-10-22
收藏
得分:0 
回复 2楼 frognidie
大哥,我不会用字符串数组
能给点代码吗,谢谢
2015-10-22 11:37
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
以下是引用o670783915在2015-10-22 11:37:06的发言:

大哥,我不会用字符串数组
能给点代码吗,谢谢
那你会什么呢?要在你会的基础上才能给你你能明白的代码呀

#include <stdio.h>

int main( void )
{
    unsigned n;
    scanf( "%u", &n );
    for( unsigned m=0; m!=n; ++m )
    {
        unsigned k;
        scanf( "%u%*c", &k );
        char s[20][201];
        for( unsigned i=0; i!=k; ++i )
            gets( s[i] );

        printf( "Case %u: ", m+1 );
        for( unsigned i=0; s[0][i]; ++i )
        {
            unsigned j;
            for( j=1; j!=k && s[j][i]==s[0][i]; ++j );
            if( j==k )
                putchar( s[0][i] );
        }
        putchar( '\n' );
    }

    return 0;
}

2015-10-22 13:42
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
还可以发白色代码了啊?论坛又进步了。

我们都在路上。。。。。
2015-10-22 14:06
o670783915
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2015-10-22
收藏
得分:0 
回复 3楼 o670783915
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    int a,x;
    int n,i,j,y;
    int d=0;
    char s[21],f[21];
    scanf("%d",&n);
    for (x=0;x<n;x++)
    {
        d++;

        scanf("%d ",a);
        gets(s);
        getchar();
        for (i=0;i<a-1;i++)
        {
            gets(f);
            y = strlen(s);
            for (j=0;j<y;j++)
            {
                if (s[j]!=f[j])
                {
                    s[j] = 0;
                }
            }
        }
        printf("Case %d: ",d);
        for (i=0;s[i]==0;i++)
        {
            printf("%c",s[i]);
        }

    }

    return 0;
}
我表示我的代码不成熟,看了大神的才知道。。。。
那为什么我的会错
2015-10-22 17:13
快速回复:新手求助共同的前缀
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022915 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved