您的位置:首页 > 理论基础

计算机学院大学生程序设计竞赛(2015’12)1001 The Country List

2015-12-28 22:51 204 查看
题意:在n个国家的名字中,找出多少个难区分的国家的名字,(难区分:长度相同,且每个单词中在对应的位置上有三个或三个以上的相同的字母)

注意:不区分大小写

#include<stdio.h>

#include<string.h>

char s[105][25];

int mark[105];

char change(char c)

{

    if(c>='a'&&c<='z')

    {

        return c-32;

    }

    else return c; //注意不是小写字母的也要返回一个值,没有返回值,则下面的对应位置上就会出错

}

int main()

{

    int n,sum,i,j,k,count;

    while(scanf("%d",&n)!=EOF)

    {

        sum=0;

        memset(s,0,sizeof(s));

        for(i=0;i<n;i++)

        {

            scanf("%s",s[i]);

        }

        memset(mark,0,sizeof(mark));

        for(i=0;i<n-1;i++)

        {

            for(j=i+1;j<n;j++)

            {

                if(strlen(s[i])==strlen(s[j]))

                {

                    count=0;

                    for(k=0;k<strlen(s[i]);k++)

                    {

                        if(change(s[i][k])==change(s[j][k]))

                            count++;

                    }

                    if(count>2)

                    {

                        if(mark[i]==0) //注意:用mark标记的原因:第一个只和第三个难区分,但第二个和第四个难区分,则就算四个了

                        {

                            mark[i]=1;

                            sum++;

                        }

                        if(mark[j]==0)

                        {

                            mark[j]=1;

                            sum++;

                        }    

                    }

                }

            }

        }

        printf("%d\n",sum);

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: