解题思路:
1.定义一个比较大的数组,初始化为0,用来存储输入的编号
2.再定义一个数组用来存储编号的个数,遍历第一个数组,第二个
数组以编号为数组下标,记录每个编号的个数,这里就会产生一个
问题,因为我是从第一个开始遍历,倘若这个编号只出现了依次,
那么我的第二个数组的值就还是0,并没有记录这个数
3.所以就会产生了两种情况,第一种就是每个编号全都只出现了
一次,那么我的第二个数组的值就全部为0.
第二种情况就是那些出现了两次及以上的编号,找最大值就行了,
注意最后输出的个数+1就行了
#include <stdio.h>
int main()
{
int n,m,a[100001]={0},k=0,flag=0;
int b[1001]={0},c=0,max,p=0;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&m);
for(int j=0;j<m;j++)
scanf("%d",&a[k++]);
}
for(int i=0;i<k;i++)
{
for(int j=i+1;j<k;j++)
{
if(a[j]>0&&a[i]==a[j])
{
a[j]=-1;
b[a[i]]++;
}
}
}
for(int i=0;i<1001;i++)
{
if(b[i]>0)
flag=1;
}
if(flag==0)
{
for(int i=1;i<1001;i++)
{
for(int j=0;j<k;j++)
{
if(i==a[j])
{
p=i;
break;
}
}
}
printf("%d %d",p,1);
}
else
{
max=b[0];
for(int i=1;i<1001;i++)
{
if(max<b[i])
{
max=b[i];
p=i;
}
if(max==b[i]&&i>p)
{
max=b[i];
p=i;
}
}
printf("%d %d",p,b[p]+1);
}
return 0;
}