输入格式:
输入在第一行给出一个正整数N(≤1000),是该用户点赞的博文数量。随后N行,每行给出一篇被其点赞的博文的特性描述,格式为“K F1⋯FK”,其中1≤K≤10,Fi(i=1,⋯,K)是特性标签的编号,我们将所有特性标签从1到1000编号。数字间以空格分隔。
输出格式:
统计所有被点赞的博文中最常出现的那个特性标签,在一行中输出它的编号和出现次数,数字间隔1个空格。如果有并列,则输出编号最大的那个。
输入样例:
4
3 889 233 2
5 100 3 233 2 73
4 3 73 889 2
2 233 123
输出样例:
233 3
源代码:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int nums[1010]={0}; //初始化为0
bool cmp(int a,int b) //降序的cmp函数
{
return a>b;
}
int main()
{
vector<int> vec;
int n,m;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>m;
for(int j=0;j<m;j++)
{
int t,flag=1; //设置flag
cin>>t;
for(int k=0;k<vec.size();k++) //去重
{
if(t==vec[k])
{
nums[k]++;
flag=0; //如果有重复的则不入vec,且记录flag为0
}
}
if(flag)
vec.push_back(t);
}
}
int max=nums[0];
for(int i=0;i<vec.size();i++) //找出最大值
{
if(nums[i]>max)
max=nums[i];
}
vector<int> vec_2;
for(int j=0;j<vec.size();j++) //如果有重复量等于最大值的放入vec_2
{
if(nums[j]==max)
vec_2.push_back(vec[j]);
}
sort(vec_2.begin(),vec_2.end(),cmp); //降序排序
cout<<vec_2[0]<<' '<<max+1; //将第一个值即最大值输出,输出max(因初始化为0,max需+1)
return 0;
}