XTU OJ 1133 最近联系人

Description

有一个通话的记录,请找出联系最多的联系人名字。

输入

第一行是一个整数N,表示样例的个数。

每个样例从”START”开始,”END”结束,其间每行一个联系人的名字,名字都是小写英文,长度不超过16个字符,联系人数不超过20人。

输出

每行输出一个样例的结果,如果有多个名字符合条件,请输出字典序最小的那个人的名字。

Sample Input

2
START
eric
john
eric
END
START
eric
alice
END

Sample Output

eric
alice

用无限循环将字符串输入,直到遇到END跳出循环。
用冒泡排序,将字符串按字典序排列,如果连着的两项相同,计数器+1,如果出现了新的最大值,将最大值赋予给max,最后输出Maxname。

AC代码如下:

#include <stdio.h>
#include <string.h>

int main ()
{
    int N;
    char list[25][20],Maxname[20];
    scanf("%d",&N);
    while(N--){
        int cnt=0,cnt1=0,max=0;
        scanf("%s",list[++cnt]);
        while(1){
            if(!strcmp(list[cnt],"END"))
            break;
        }
        
    for(int i=cnt-1;i>0;i--){
        for(int j=1;j<i;j++){
            if(strcmp(list[j],list[j+1])>0){
                char tmp[20]={0};
                strcpy(tmp,list[j]);
                strcpy(list[j],list[j+1]);
                strcpy(list[j+1],tmp);
            }
        }
    }
        strcpy(Maxname,list[1]);
        for(int i=0;i<cnt;i++){
            if(!strcmp(list[i]=list[i-1]))
            {
                cnt++;
                if(cnt1>max){
                    max=cnt1;
                    stycpy(Maxname,list[i]);
                }
            }
        else cnt1=0;
        }
    printf("%S\n",Maxname);
    }
return 0;
}

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值