0
点赞
收藏
分享

微信扫一扫

C语言:L2-021 点赞狂魔 (25 分)

眸晓 2022-03-16 阅读 116

文章目录

一、题目

输入格式:

输出格式:

输入样例:

输出样例:

二、方法1

1、思路

注意手动去重即可,还有每次输入一组数据一定要记得初始化。

2、代码

#include<stdio.h>
#include<stdlib.h>
#define max 105
#define Max 100000000

typedef struct peoson
{
	char name[20];
	int num;
	int count;
}node;
node p[max];
int a[max][1005];
int flag[Max];

int n, k;
int i, j;
int id;

int cmp(const void* e1, const void* e2);

int main()
{
	scanf("%d", &n);
	for (i = 0; i < n; i++)
	{
		scanf("%s", p[i].name);
		scanf("%d", &p[i].num);
		for (j = 0; j < p[i].num; j++)
		{
			scanf("%d", &a[i][j]);
			// 去重
			flag[a[i][j]]++;
			if (flag[a[i][j]] == 1)
				p[i].count++;
		}
		for (j = 0; j < p[i].num; j++)
			flag[a[i][j]] = 0;
	}
	qsort(p, n, sizeof(p[0]), cmp);

	for (i = 0; i < 3; i++)
	{
		if (i != 0)
			printf(" ");
		if (i < n)
			printf("%s", p[i].name);
		else
			printf("-");
	}
	return 0;
}

int cmp(const void* e1, const void* e2)
{
	node* a = (node*)e1;
	node* b = (node*)e2;
	if (a->count != b->count)
		return a->count < b->count ? 1 : 0;
	return a->num > b->num ? 1 : 0;
}
举报

相关推荐

0 条评论