微博上有个“点赞”功能,你可以为你喜欢的博文点个赞表示支持。每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性。然而有这么一种人,他们会通过给自己看到的一切内容点赞来狂刷存在感,这种人就被称为“点赞狂魔”。他们点赞的标签非常分散,无法体现出明显的特性。本题就要求你写个程序,通过统计每个人点赞的不同标签的数量,找出前3名点赞狂魔。

输入格式:

输入在第一行给出一个正整数N(≤100),是待统计的用户数。随后N行,每行列出一位用户的点赞标签。格式为“Name K F1​⋯FK​”,其中Name是不超过8个英文小写字母的非空用户名,1≤K≤1000,Fi​(i=1,⋯,K)是特性标签的编号,我们将所有特性标签从 1 到 107 编号。数字间以空格分隔。

输出格式:

统计每个人点赞的不同标签的数量,找出数量最大的前3名,在一行中顺序输出他们的用户名,其间以1个空格分隔,且行末不得有多余空格。如果有并列,则输出标签出现次数平均值最小的那个,题目保证这样的用户没有并列。若不足3人,则用-补齐缺失,例如mike jenny -就表示只有2人。

输入样例:

5
bob 11 101 102 103 104 105 106 107 108 108 107 107
peter 8 1 2 3 4 3 2 5 1
chris 12 1 2 3 4 5 6 7 8 9 1 2 3
john 10 8 7 6 5 4 3 2 1 7 5
jack 9 6 7 8 9 10 11 12 13 14

结尾无空行

输出样例:

jack chris john

结尾无空行

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

struct Node { //点赞狂魔结构体
    char Name[10];
    int sum;
    double a;
};

struct Min { //最小点赞数用户
    int min;
    int top;
    double a;
}m;

int cmp( const void *a ,const void *b) 

    if (((*(struct Node *)a).sum < (*(struct Node *)b).sum) ||
    ((*(struct Node *)a).sum == (*(struct Node *)b).sum) &&
    ((*(struct Node *)a).a > (*(struct Node *)b).a)) {
        return 1;
    }
    else {
        return -1;
    } 
}

int main()
{
    int i, N, x, cnt = 0, min = 0;
    int K[1001];
    scanf("%d", &N);
    struct Node p, s[3];
    m.min = -1;
    m.top = 0;
    for(i = 0; i < 3; i ++) {
        s[i].sum = 0;
        s[i].a = 0;
    }
    for(i = 0; i < N; i ++) {
        scanf("%s", p.Name);
        p.sum = 0;
        int n;
        scanf("%d", &n);
        p.a = n; //真实点赞数
        while(n --){
            scanf("%d", &x);
            int j, flag = 1;
            for(j = 0; j <= p.sum; j ++) {
                if(K[j] == x) {
                    flag = 0;
                    break;
                }
            }
            if(flag) {
                p.sum ++; //标签种类数
                K[p.sum] = x;
            }
        }
        p.a /= (p.sum * 1.0);
        if(p.sum > m.min) { //判断当前输入的用户是否大于最小用户
            int k;
            /*将当前用户替换掉数组中最小用户*/
            strcpy(s[m.top].Name, p.Name);
            s[m.top].sum = p.sum;
            s[m.top].a = p.a;
            m.min = 1000;
            for(k = 0; k < 3; k ++) { //找到更换后数组中的最小用户
                if(m.min >= s[k].sum) {
                    if(m.min == s[k].sum) {
                        if(m.a > s[k].a) {
                            continue;
                        }
                    }
                    /*替换最小用户*/
                    m.min = s[k].sum; 
                    m.top = k;
                    m.a = s[k].a;
                }
            }
        }
    }
    qsort(s, 3, sizeof(s[0]), cmp); //调用快排函数
    /*输出比较粗暴*/
    if(N == 1) {
        printf("%s - -", s[0].Name);
    }
    else if(N == 2) {
        printf("%s %s -", s[0].Name, s[1].Name);
    }
    else {
        printf("%s %s %s", s[0].Name, s[1].Name, s[2].Name);
    }

return 0;
}

(可选做) 点赞狂魔 (14 分)相关推荐

  1. 7-84 点赞狂魔 (25 分)

    7-84 点赞狂魔 (25 分) 微博上有个"点赞"功能,你可以为你喜欢的博文点个赞表示支持.每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性.然而有这 ...

  2. 【CCCC】L2-021 点赞狂魔 (25分),,模拟水题,map数组,间接排序

    problem L2-021 点赞狂魔 (25分) 微博上有个"点赞"功能,你可以为你喜欢的博文点个赞表示支持.每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了 ...

  3. 数据结构排序-7-3 点赞狂魔 (25 分)

    7-3 点赞狂魔 (25 分) 微博上有个"点赞"功能,你可以为你喜欢的博文点个赞表示支持.每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性.然而有这么 ...

  4. 7-9 点赞狂魔 (25分)

    7-9 点赞狂魔 (25分) 微博上有个"点赞"功能,你可以为你喜欢的博文点个赞表示支持.每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性.然而有这么一 ...

  5. L2-021 点赞狂魔 (25 分)

    L2-021 点赞狂魔 (25 分) 题目 微博上有个"点赞"功能,你可以为你喜欢的博文点个赞表示支持.每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性 ...

  6. L2-021 点赞狂魔 (25分) | set sort

    L2-021 点赞狂魔 (25分) 微博上有个"点赞"功能,你可以为你喜欢的博文点个赞表示支持.每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性.然而有 ...

  7. 点赞狂魔 (25 分) C语言

    点赞狂魔 (25 分) 微博上有个"点赞"功能,你可以为你喜欢的博文点个赞表示支持.每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性.然而有这么一种人, ...

  8. L2-2 点赞狂魔 (25 分)(C/C++)

    输入样例: 5 bob 11 101 102 103 104 105 106 107 108 108 107 107 peter 8 1 2 3 4 3 2 5 1 chris 12 1 2 3 4 ...

  9. PTA-7-3 点赞狂魔 (25分)

    问题描述: 微博上有个"点赞"功能,你可以为你喜欢的博文点个赞表示支持.每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性.然而有这么一种人,他们会通过给 ...

最新文章

  1. OTA常见方案分析(差分升级 全量升级 AB面升级 Recovery系统升级)
  2. 转载:【opencv入门教程之六】创建Trackbar图片对比度、亮度值调整
  3. c语言 函数多个参数,C语言函数可变参数
  4. ReactNative手势解锁(react-native-ok-gesture-password)
  5. 【.NET架构】BIM软件架构02:Web管控平台后台架构
  6. ctypes 使用方法与说明
  7. LeetCode:完全平方数【279】【DP】
  8. 【2021-12-17】css反爬+pytesseract文字识别
  9. 1到20阶乘倒数之和
  10. Android 下载Zip文件,并解压到本地
  11. PS 图层的基本操作
  12. vue项目运行后自动打开浏览器
  13. MAC版photoshop CS6安装与破解
  14. 计算机A类会议 icip,计算机视觉|中国计算机学会推荐国际学术刊物/会议
  15. 腾讯互娱开源分布式开发框架Pebble
  16. 计算机科学人工智能的应用,计算机人工智能技术的应用与发展.pdf
  17. 爬取热榜数据,通过Qt界面显示,代码可直接运行(python3经典编程案例)
  18. czl蒻蒟的OI之路14、15
  19. QmlTableView
  20. JAVA的IO/NIO?

热门文章

  1. js 解决页面切换时,定时器setInterval会变得很慢,有时候不执行的问题
  2. 美赛latex模板单独修改目录的行间距
  3. 防抖节流理解与应用场景
  4. OpenStack 运维 - 部署Nova组件 [T版]
  5. 改进版爬虫 爬取漂亮妹纸图1
  6. 2010北京联合大学计算机答案,2010年、2011年单考单招考试练习题 - 特殊教育学院- 北京联合大学.doc...
  7. Spring之——c3p0配置详解
  8. PartyOK酒吧游戏实用手册
  9. Unity3D研究院之游戏开发中的人工智能AI
  10. python post 请求json文件_requests的post请求提交表单、json串和文件数据讲解