题目很水,就是求出现次数为第二大的有多少个,输出来就OK
代码如下:
#include <iostream>
using namespace std;
int main()
{
int a[10001];
int m,n,i,j,b,Max;
while (scanf("%d%d",&m,&n),m||n)
{
Max=0;
memset(a,0,sizeof(a));
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
scanf("%d",&b);
a[b]++;
if(Max<a[b])
Max=a[b];
}
}
for (i=0;i<10001;i++)
{
if(a[i]==Max)
a[i]=0;
}
Max=0;
int cnt=0;
int c[10001];
for (i=0;i<10001;i++)
{
if(Max<a[i])
Max=a[i];
}
for (i=0;i<10001;i++)
{
if(Max==a[i])
c[cnt++]=i;
}
printf("%d ",c[0]);
for (j=1;j<cnt;j++)
printf("%d\n",c[j]);
}
return 0;
}
附言:谁把这道题归结到排序问题中去的,真无聊!