2 算法1-2 明明的随机数

news/2025/2/25 9:20:22

题目描述

明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 N 个 1 到 1000 之间的随机整数 (N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。

输入格式

输入有两行,第 1 行为 1 个正整数,表示所生成的随机数的个数 N。

第 2 行有 N 个用空格隔开的正整数,为所产生的随机数。

输出格式

输出也是两行,第 1 行为 1 个正整数 M,表示不相同的随机数的个数。

第 2 行为 M 个用空格隔开的正整数,为从小到大排好序的不相同的随机数。

输入输出样例

输入 #1

10
20 40 32 67 40 20 89 300 400 15

输出 #1

8
15 20 32 40 67 89 300 400

 unique函数:

 是一个存在于 <algorithm> 头文件中的算法函数,它用于从排序的范围内移除连续的重复元素。

#include<iostream>
#include<algorithm>
using namespace std;

int n, cnt;
const int N = 1010;
int a[N];

void quick_sort(int a[], int l, int r)   
{
	if(l>=r) return;
	
	int i = l-1, j = r+1;  
	int x = a[l+r >> 1];
	
	while(i<j)
	{
		do i++; while(a[i]<x);  
		do j--; while(a[j]>x);
		if(i<j) swap(a[i], a[j]);
	}
	
	quick_sort(a, l, j);
	quick_sort(a, j+1, r);
}

int main()
{
	scanf("%d", &n);
	
	for(int i=0; i<n; i++)
	{
		scanf("%d", &a[i]);
	}
	
	quick_sort(a, 0, n-1);
	
	cnt = n;
	for(int i=0; i<n; ++i)
	{
		if(a[i]==a[i+1]) cnt--;
	}
	
	unique(a, a+n);
	
	cout<<cnt<<endl;
	for(int i=0; i<=cnt-1; ++i)
	    cout<<a[i]<<" ";
			
	return 0;
}


http://www.niftyadmin.cn/n/5865311.html

相关文章

互联网上门洗衣洗鞋小程序

洗衣洗鞋小程序必备功能&#xff1a; 1. 在线下单上门取送&#xff1a;用户随时下单&#xff0c;享受上门取送服务&#xff0c;方便快捷。 2. 拼团洗鞋&#xff1a;拼团享优惠&#xff0c;吸引更多订单。 3. 抽奖砍价&#xff1a;通过抽奖、砍价等活动&#xff0c;提升用户参与…

1.适配器模式

概述 适配器模式&#xff1a;将一个类的接口转换成客户希望的另一个接口&#xff0c;使得原本不兼容的类可以一起工作。 适配器模式在业务场景中非常有用&#xff0c;尤其是在系统集成、接口兼容性处理以及代码复用等场景。以下是一个实际的业务场景示例&#xff1a; 业务场景…

【Rust中级教程】2.9. API设计原则之显然性(obvious) :文档与类型系统、语义化类型、使用“零大小”类型

喜欢的话别忘了点赞、收藏加关注哦&#xff08;加关注即可阅读全文&#xff09;&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 2.9.1. 文档与类型系统 用户可能不会完全理解API的所有规则和限制。所以你写的API应该让你…

双指针1:283. 移动零

双指针的基本思想&#xff1a; 首先根据异地操作确定指针的基本步骤&#xff0c;再将异地操作优化成原地操作的双指针解法 链接&#xff1a;283. 移动零 - 力扣&#xff08;LeetCode&#xff09; 题解&#xff1a; 异地操作&#xff1a;fast指针指向原数组&#xff0c;slow指…

tableau之人口金字塔、漏斗图、箱线图

一、人口金字塔 人口金字塔在本质上就是成对的条形图 人口金字塔是一种特殊的旋风图 1、数据处理 对异常数据进行处理 2、创建人口金字塔图 将年龄进行分桶 将男女人数数据隔离开 分别绘制两个条形图 双击男性条形图底部&#xff0c;将数据进行翻转&#xff08;倒序&a…

本周行情——250222

本周A股行情展望与策略 结合近期盘面特征及市场主线演化&#xff0c;本周A股预计延续结构性分化行情&#xff0c;科技成长与政策催化板块仍是资金主战场&#xff0c;但需警惕高标股分歧带来的波动。以下是具体分析与策略建议&#xff1a; 1. 行情核心驱动因素 主线延续性&…

JavaScript系列(86)--现代构建工具详解

JavaScript 现代构建工具详解 &#x1f528; 现代前端开发离不开构建工具&#xff0c;它们帮助我们处理模块打包、代码转换、资源优化等任务。让我们深入了解主流的构建工具及其应用。 构建工具概述 &#x1f31f; &#x1f4a1; 小知识&#xff1a;构建工具主要解决代码转换…

C语言堆学习笔记

1. 堆的定义 堆&#xff08;Heap&#xff09;是一种特殊的树形数据结构&#xff0c;它满足以下性质&#xff1a; 堆是一个完全二叉树。堆中每个节点的值都大于或等于&#xff08;最大堆&#xff09;或小于或等于&#xff08;最小堆&#xff09;其子节点的值。 1.1 最大堆 在…