本文主要是介绍L2-021 点赞狂魔,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、题目
二、解题思路
- 统计每个人点赞的不同标签的数量:每行列出一位用户的点赞标签,这些标签可能有重复的,所以将用户的点赞标签存放在 set 里,通过 size() 函数获得点赞的不同标签的数量;
- 结构体包括用户的信息:姓名 name 、点赞标签的数量 sum 、点赞的不同标签的数量 cot;
- 冒牌排序对结构体进行排序,排序规则:按照 cot 降序排序,若 cot 相同,则按照 sum 升序排序。
三、代码
#include<iostream>
using namespace std;
#include<set>struct User
{string name;int sum;int cot;
}a[105];int main()
{int n;cin>>n;for(int i=0;i<n;i++){cin>>a[i].name>>a[i].sum;set<int> t;for(int j=0;j<a[i].sum;j++){int id;cin>>id;t.insert(id);}a[i].cot=t.size();}for(int i=0;i<n-1;i++){for(int j=0;j<n-i-1;j++){if(a[j].cot<a[j+1].cot || (a[j].cot==a[j+1].cot &&a[j].sum>a[j+1].sum)){struct User t=a[j];a[j]=a[j+1];a[j+1]=t;}}}cout<<a[0].name;for(int i=1;i<3;i++){if(n>=(i+1)){cout<<" "<<a[i].name;}else{cout<<" "<<"-";}}return 0;
}
四、总结
题目中 “如果有并列,则输出标签出现次数平均值最小的那个” 可以理解为 sum / cot 最小,因为 cot 是相同的,所以找 sum 最小的那个即可。
这篇关于L2-021 点赞狂魔的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!