

思路:双重字符数组,再用冒泡按字典序排列,再统计数量
我的疑惑:
1.一开始
char end[3]={'E','N','D'};
char name[N][N];
我一直放在while(T--)里面,一直oj编译器运行错误,但是小熊猫可以运行(只是速度很慢),这里存个档,等学到后面再回来看看
2.冒泡序列若是
for(int i=1;i<len-1;i++){
for(int j=1;j<len-1-i;j++){
if(strcmp(name[j],name[j+1])>0){
char s[N];
strcpy(s,name[j]);
strcpy(name[j],name[j+1]);
strcpy(name[j+1],s);
}
}
}//冒泡排序,字典序小的在前面
也无法通过
AC代码
#include<stdio.h>
#include<string.h>
#define N 28
char name[N][N];
char end[]="END";
int main(){
int T;
scanf("%d",&T);
while(T--){
scanf("%s",name[0]);//"吃掉"start
int len=0;
while(1){
scanf("%s",name[++len]);
if(strcmp(name[len],end)==0){
break;
}
}//输入
for(int i=len-1;i>0;i--){
for(int j=1;j<i;j++){
if(strcmp(name[j],name[j+1])>0){
char s[N]={0};
strcpy(s,name[j]);
strcpy(name[j],name[j+1]);
strcpy(name[j+1],s);
}
}
}
int maxp=1;
int p=1;
char max[N];
strcpy(max,name[1]);
for(int i=2;i<len;i++){
if(strcmp(name[i],name[i-1])==0){
p++;
if(p>maxp){
maxp=p;
strcpy(max,name[i]);
}
}
else {
p=1;
}
}
printf("%s\n",max);
}
}