- 查看
- 提交
- 统计
- 提问
-
总时间限制:
-
1000ms
内存限制:
-
65536kB
-
描述
-
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
输入
-
有2行,第1行为1个正整数,表示所生成的随机数的个数:N;
第2行有N个用空格隔开的正整数,为所产生的随机数。
输出
- 也是2行,第1行为1个正整数M,表示不相同的随机数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。 样例输入
-
1020 40 32 67 40 20 89 300 400 15
样例输出
-
815 20 32 40 67 89 300 400
本题主要是去重和排序,首想先进行去重复,然后可以用你所熟悉的各种排序算法进行排序,本题我应用的是较为简单的冒泡排序。
#include <stdio.h>
int main ()
{
int n ,a [ 20001 ],i ,j ,f [ 20001 ]= { 0 } ,b [ 20001 ],k = 0 ,t = 0 ;
scanf ( "%d" ,&n );
for (i = 0 ;i <n ;i ++)
{
scanf ( "%d" ,&a [i ]);
}
for (i = 0 ;i <n ;i ++)
{
f [a [i ]]++;
if (f [a [i ]]== 1 ) b [k ++]=a [i ];
}
for (i = 0 ;i <k -1 ;i ++)
{
for (j = 0 ;j <k -i -1 ;j ++)
{ if (b [j ]>b [j +1 ])
{
t =b [j ];b [j ]=b [j +1 ];b [j +1 ]=t ;
}
}
}
printf ( "%d \n " ,k );
for (i = 0 ;i <k ;i ++)
printf ( "%d " ,b [i ]);
return 0 ;
}
-
1000ms
明明的随机数
最新推荐文章于 2023-08-31 15:38:55 发布