Description
给出一个英文单词的列表,计算有多少不同的单词在列表中。
Input
本题有多组输入数据,你必须处理到EOF为止
每组数据的第一行有一个整数n, 1<=n<=1000.下面的n行每行一个单词,每个单词的长度不超过20。单词大小写忽略。
Output
每组数据输出一个整数,表示不同的单词数。
Sample Input
5
FZU
FzU
LOY
BNh
FZU
Sample Output
3
分析:与杭电上的1004 :Let the Balloon Rise 改的题型;
AC代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<cmath>
using namespace std;
char a[1001][25];
int main()
{
int M,num[1001],i,j;
while(scanf("%d",&M)!=EOF)
{
scanf("%s",a[0]);
int len=strlen(a[0]);
for(int k=0;k<len;k++)
{
if(a[0][k]>='a'&&a[0][k]<='z')
a[0][k]=a[0][k]-32;
}
num[0]=0;
for(i=1;i<M;i++)
{
num[i]=0;
scanf("%s",a[i]);
int len=strlen(a[i]);
for(int k=0;k<len;k++)
{
if(a[i][k]>='a'&&a[i][k]<='z')
a[i][k]=a[i][k]-32;
}
for(j=0;j<=i-1;j++)
{
if(strcmp(a[i],a[j])==0)
num[i]+=1;
}
}
int sum=0,num2=0;
int flag=0;
for(i=0;i<M;i++)
{
if(num[i]==0)
{
num2++;
}
if(num[i]!=0)
{
for(j=0;j<M;j++)
{
if(strcmp(a[i],a[j])==0)//这一点想了十几分钟,怪我太弱;
flag=1;
}
if(!flag)
sum++;
}
}
printf("%d\n",num2+sum);
}
return 0;
}