[2006年NOIP普及组] 明明的随机数

[2006年NOIP普及组] 明明的随机数

思路:用桶排序..开一个足够大的数组,将输入的数字k放在数组第k个位置,然后标记。循环n次,如果放数的位置已经被标记过,说明输入的数字重复了,去掉。

分析:注意要按从小到大的顺序输出。

代码如下:

#include<iostream>

#include<cstring>

using namespace std;

int main()

{

   int a[1005];

   memset(a,0,sizeof(a));//初始化

   int k,n,s=0;//s为计数器

   cin>>n;//原始数字个数

   for(int i=1;i<=n;++i)//去重

   {

     cin>>k;//输入一个数

     if(a[k]!=1)//原来如果没有,则标记

     s++;//记录

     a[k]=1;//标记

   }

    cout<<s<<endl;//输出去重后的数字个数

    for(int j=0;j<=1000;++j)//按从小到大的顺序输出

    if(a[j]==1)

    cout<<j<<" ";//输出去重后的数字

   return 0;

}

posted @ 2022-08-13 11:28  shanyingrui  阅读(17)  评论(0编辑  收藏  举报