还是Qsort的运用。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct s{
char str[22];
}Str;
Str c[21000];
int counts[21000];
int times = 1;
int cmp(const void *a,const void *b){
Str *f1 = (Str*)a;
Str *f2 = (Str*)b;
return strcmp(f1->str,f2->str);
}
int main(){
int n,m;
int i;
int num;
while(scanf("%d%d",&n,&m)!=EOF){
if(n==0 && m==0) break;
for(i=0;i<n;i++) {
scanf("%s",c[i].str);
counts[i] = 0;
}
qsort(c,n,sizeof(c[0]),cmp);
i = 1;
num = 1;
while(i<n){
if(strcmp(c[i].str,c[i-1].str)==0){
i++;
num ++;
continue;
}
counts[num]++;
i++;
num=1;
}
counts[num] ++;
// printf("Case %d:\n",times++);
for(i=1;i<=n;i++) printf("%d\n",counts[i]);
}
return 0;
}