#include <stdio.h>
#include <string.h>
int main()
{
char s[10000];
int i,j,n,u,v;
while(gets(s)&&strcmp(s,"#")!=0){
//if(strcmp(s,"#")==0)break;
char ss[10000][200];
n=strlen(s);
//k=0;
u=0;i=0;
while(i<n){
if(s[i]==' '){
while(s[i]==' ')++i;
}else
{
v=0;
while(s[i]!='\0'&&s[i]!=' '){
ss[u][v++]=s[i++];
}
ss[u][v]='\0';
++u;
}
}
int f[1000]={0},num=u;//int m;
//printf("%d,\n",u);
for(i=0;i<u-1;i++){
for(j=i+1;j<=u-1;j++){
if(strcmp(ss[i],ss[j])==0&&f[j]==0){
num--;
f[j]=1;
}
}
//if(f[i]==1)puts(ss[i]);
}
printf("%d\n",num);
}
return 0;
}
这道题现在看起来用map容器写好方便。
用一维数组读入,再转成二维数组,处理空格时的方法借鉴了别人的,感觉比我之前写的好