明明的随机数(2006年NOIP全国联赛普及组)

标题: 明明的随机数
详情: 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
输入格式:
输入有2行
第1行为1个正整数,表示所生成的随机数的个数:N
第2行有N个用空格隔开的正整数,为所产生的随机数。
输出格式:
输出也是2行,第1行为1个正整数M,表示不相同的随机数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。
提示: NOIP普及组2006
限制: 每个测试点1秒
样例:
输入

10
20 40 321 67 40 20 89 301 407 15
输出

8
15 20 40 67 89 301 321 407
输入

20
20 40 321 677 40 20 89 301 407 515 40 321 67 40 20 89 301 407 15 499

输出

11
15 20 40 67 89 301 321 407 499 515 677

思路:数据少,可以采用统计法,或者用简单的水桶法。

        #include<stdio.h>
        #include<string.h>
        int main()
        { 
            bool  a[1000];
            memset(a,false,1000);
            int n,d=0,i,temp;
            scanf("%d",&n);
            for(i=0;i<n;i++){
                scanf("%d",&temp);
                if(!a[temp-1]){
                    a[temp-1]=true;
                    d++;
                }
            }
            printf("%d\n",d);
            for(i=0;i<1000;++i){
                if(a[i]){
                    printf("%d ",i+1);
                }
            }
            return 0;   
            }

我想留下一个问题:
bool类型有没有必要初始化及初始化的其他方法?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值