我自己写的很废啦。。。
#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<cstdlib>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
for(int i=1;i<=t;i++)// t组案例
{
int n;
int a[1005]={0};
int b[1005]={0};
int c[1005]={0};
scanf("%d",&n);// n组数据
for(int i=1;i<=n;i++)
{
scanf("%d",&c[i]);
}
sort(c+1,c+n+1);// 排序
for(int i=1;i<=n;i++)
{
// cout<<c[i]<<" "<<"\n";
a[c[i]]++;
//cout<<a[c[i]]<<" \n";
}// 获得输入数的个数
int max=-1;
for(int j=1;j<=c[n];j++)//错误在这 之前写的为(int j=1;j<=n;j++)
{
if(a[j]>max)
{
max=a[j];
// cout<<a[j]<<"\n";
}
}// 获取众数其出现次数
//cout<<max;
int k=0;
for(int j=1;j<=c[n];j++)
{
if(a[j]==max)
{
k++;
b[k]=j;
//cout<<k<<" "<<b[k]<<"\n";
}
}// 寻找众数
for(int l=1;l<k;l++)
{
printf("%d ",b[l]);
}
printf("%d\n",b[k]);
//输出众数
}
return 0;
}
另一位同学写的代码,运用结构体,是我太菜了。。。
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <iostream>
#include <algorithm>
using namespace std;
struct Q
{
int l;
int r;
}b[1005];
bool cmp(struct Q a,struct Q b)
{
if(a.r!=b.r)return a.r>b.r;
else return a.l<b.l;
}
int main()
{
int t,n,i,x,j;
cin>>t;
while(t--)
{
cin>>n;
memset(b,0,sizeof(b));
for(i=0;i<n;i++)
{
cin>>x;
b[x].l=x;//x
b[x].r++;//个数
}
sort(b,b+1003,cmp);
cout<<b[0].l;
for(j=1;j<n;j++)
{
if(b[j].r==b[0].r)cout<<" "<<b[j].l;
else break;
}
cout<<endl;
}
return 0;
}