1122 小明的调查作业

题目来源:
https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1122
Description
小明的老师布置了一份调查作业,小明想在学校中随机找N个同学一起做一项问卷调查,聪明的小明为了实验的客观性,他先随机写下了N个1到1000之间的整数(0<N≤1000),不同的数对应着不同的学生的学号。但他写下的数字难免会有重复数字,小明希望能把其余重复的数去掉,然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
Input
输入有2行,第1行为1个正整数,表示整数的个数:N.
第2行有N个用空格隔开的正整数,表示小明写下的N个整数。
Output
输出也是2行,第1行为1个正整数M,表示不相同的整数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的整数。
Sample Input
10
20 40 32 67 40 20 89 300 400 15
Sample Output
8
15 20 32 40 67 89 300 400
题意描述:
输入正整数的个数n及n个正整数
计算并输出该无重复的上升序列
解题思路:
运用桶排序,再将其从小到大输出即可
程序代码:

 1 #include<stdio.h>
 2 #include<string.h>
 3 int main()
 4 {
 5     int n,i,a[1010],x,flag,count;
 6     while(scanf("%d",&n) != EOF)
 7     {
 8         memset(a,0,sizeof(a));
 9         for(count=0,i=1;i<=n;i++)
10         {
11             scanf("%d",&x);
12             if(a[x]==0)
13             count++;
14             a[x]=1;
15         }
16         printf("%d\n",count);
17         for(flag=0,i=0;i<1005;i++)
18         {
19             if(a[i])
20             {
21                 if(flag)
22                     printf(" %d",i);
23                 else
24                 {
25                     flag=1;
26                     printf("%d",i);
27                 }
28             }
29         }
30         printf("\n");
31     }
32     return 0;
33 }

 

posted @ 2017-05-01 22:18  Reqaw  阅读(454)  评论(0编辑  收藏  举报