最近联系人-有点疑惑


思路:双重字符数组,再用冒泡按字典序排列,再统计数量
我的疑惑:
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]);//"吃掉"startint 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);}
}