跳至正文

明明的随机数 解题报告

  • OI路程

这题不难,不过我看到大部分的人都是使用的先用快排再去重,有些人是先去重再用快排,我这里就用的是哈希排序,能够以线性时间(O(n))对所有数据实现排序和去重。
没什么好解释的,1~1000,把对应的数字放到相应的数组中就可以了。

#include <stdio.h>
char bucket[1001];

int main(void)
{
 int i, t;
 int n, ans = 0;
 scanf(%d, &n);
 for(i = 0; i < n; i++){
 scanf(%d, &t);
 if(!bucket[t]){
 ans++;
 }
 bucket[t] = 1;
 }
 printf(%d\\n, ans);
 t = 0; //判断空格
 for(i = 1; i <= 1000; i++){
 if(bucket[i]){
 if(t){
 printf( );
 }
 t = 1;
 printf(%d, i);
 }
 }
 printf(\\n);
 return 0;
}

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注