题意:在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);
}
}