C语言编程题,有请大神帮助下

Problem Description

给出m个字符串,要求输出重复n次的字符串有几个。
Input

先给定一个N,N≤100000,接着输入N个字符串。
Output

对于每组测试数据,输出若干行,每行两个正整数,第一个数表示重复的次数,第二个数表示在此重复次数下有几种不同的字符串。
Sample Input

5
BBA
BBA
BEA
DEC
CCF
Sample Output

CASE 1:
1 3
2 1

#include "stdio.h"
#include <string.h>
struct{
char w[21];
int n;
}t[100000];
char s[100000][21];
int main(int argc,char *argv[]){   
int N,i,j,k,x;
printf("Please enter N(int 0<N<100001)...\nN=");
if(scanf("%d",&N)!=1 || N<1 || N>100000){
printf("Input error, exit...\n");
return 0;
}
printf("Please enter %d strings...\n",N);
for(i=0;i<N;scanf("%20s",s[i++]));//输入字符串
for(strcpy(t[0].w,s[0]),t[0].n=k=i=1;i<N;i++){
for(j=0;j<k;j++)
if(strcmp(s[i],t[j].w)==0){
t[j].n++;
break;
}
if(j>=k){
strcpy(t[k].w,s[i]);
t[k++].n=1;
}
}
printf("-----------------\n");
for(i=1;i<=k;i++){
for(x=j=0;j<k;j++)
if(t[j].n==i)
x++;
if(x)
printf("%d  %d\n",i,x);
}
return 0;
}

运行样例:

温馨提示:答案为网友推荐,仅供参考
相似回答