这个题,,,一开始不怎么懂题目的意思,特别是输出,不知道怎么输出,又是WA了好几次,然后看了uhunt那里的discuss,按照上面提供的代码,修改了输出部分,就过了,输出是每次以最多重复数字的个数为等差输出,详见代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cstdlib>
#include<algorithm>
using namespace std;
int num[10001],vis[10001];
int main()
{
// freopen("in.txt","r",stdin);
int n,flag=0;
while(scanf("%d",&n)!=EOF&&n)
{
if(flag) cout<<endl;
for(int i=0; i<n; i++)
scanf("%d",&num[i]);
sort(num,num+n);
int temp=num[0],nn=0,max=0;
for(int i=0; i<n; i++)
{
if(temp==num[i])
nn++;
else
{
nn=1;
temp=num[i];
}
max=max>nn?max:nn;
}
cout<<max<<endl;
for(int i=0; i<max; i++)
{
cout<<num[i];
for(int j=i+max; j<n; j+=max)
cout<<" "<<num[j];
cout<<endl;
}
flag=1;
}
return 0;
}