rqnoj 1 去重+排序
来源:互联网 发布:手机fm发射器软件 编辑:程序博客网 时间:2024/04/27 14:27
题目描述
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
输入格式
输入有2行,第1行为1个正整数,表示所生成的随机数的个数:
N
第2行有N个用空格隔开的正整数,为所产生的随机数。
输出格式
输出也是2行,第1行为1个正整数M,表示不相同的随机数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。
10
20 40 32 67 40 20 89 300 400 15
8
15 20 32 40 67 89 300 400
很简单的一道题,set模板类题。不过这个用优先级队列来做倒是一种新思路。把优先级定义为大小顺序,出队的时候比较和它之前的一样不一样,不一样才出队并且累加数目。
#include <stdio.h>#include <iostream>#include <queue>#include <vector>#include <set>using namespace std;/*优先级队列*/{int operator () (int &a, int &b){return a > b;}};priority_queue <int, vector<int>, cmp> q;int main(){int n, i, x, j, a[105], sum = 0, pre;scanf("%d", &n);for(i = 0 ; i < n ; i++){ scanf("%d", &x); q.push(x);}pre = 2000;i = 0;while(!q.empty()){x = q.top();q.pop();if(x != pre){sum ++;a[i] = x;pre = x;i++;}}printf("%d\n", sum);for(j = 0 ; j < i ; j++) printf("%d ", a[j]);printf("\n");return 0;}/*set*/ set <int> s;set <int> ::iterator it;int main(){int n, i, x;scanf("%d", &n);for(i = 0 ; i < n ; i++){scanf("%d", &x);s.insert(x);}printf("%d\n", s.size());for(it = s.begin() ; it != s.end() ; it ++) printf("%d ", *it);printf("\n");return 0;}
0 0
- rqnoj 1 去重+排序
- 数组排序去重
- list去重排序
- 整数去重排序
- DataTable排序,去重
- List排序去重
- shell 排序 去重
- 去重与排序
- 去重排序
- STL 去重排序
- 随机数去重排序
- 排序去重
- 随机数去重排序
- iOS去重 排序
- List去重排序
- “去重”与“排序”
- 去重排序
- 排序+去重
- 4、React对组件的DOM事件监听
- Android Studio 快捷键
- xcode 左边导航栏中,类文件后面的标记字母的意义
- gitbub for windows 环境搭建与代码同步
- iReport与JasperReport PDF中文解决
- rqnoj 1 去重+排序
- 虚函数表
- 给自己的一些提醒
- Google Protocol Buffer 传输数据相对其他格式较短的原理
- VirtualBox中不能正常使用OpneGL的问题
- 浅谈用极大化思想解决最大子矩阵问题
- CSS 垂直居中设置
- PSK星座对象(constellation.cc)
- NSRunloop