#include<stdio.h>
int main()
{
int a[1001],i,n,t,m;
for(i=0;i<=1000;i++)
{
a[i]=0;
}
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&t);
a[t]++;
}
m=0;
for(i=0;i<=1000;i++)
{
if(a[i]>0)
m++;
}
printf("%d\n",m);
for(i=0;i<=1000;i++)
{
if(a[i]>0)
printf("%d ",i);
}
return 0;
}
该问题是桶排问题,数组a[t]就是桶,当输入一个t时,a[t]的桶里加一,如果该桶的数值大于零,也就是有我们输入的数,此时m加一,然后输出m可知输入的数中,去重后有几个数,然后利用循环,如果a[i]大于零,则输出i,便可得到去重后的·所有数字。