1 条题解
-
0
自动搬运
来自洛谷,原作者为

chenxi2009
身如柳絮随风扬。|粉福见专栏。|红名且勾支持互搬运于
2025-08-24 21:20:27,当前版本为作者最后更新于2025-08-08 21:25:12,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
思路
本题考查知识点为排序或 STL 常用函数。
题意为给输入的数列排序并去重,输出之后的数列。本题解重点介绍 STL 函数 sort 和 unique。
给一个整数数列,我们可以使用 sort 函数对它排序,sort 函数的调用方式为
sort(begin_place,end_place);,其中begin_place和end_place表示排序数组的开头位置和结尾位置。注意:此处的结尾位置为最后一个元素的位置的后一个位置,也即数列后的第一个空位置。STL 系列函数的“结束位置”都是这么定义的。对于一个有序的数组,我们可以使用 unique 函数对它去重。unique 函数的调用方式为
unique(begin_place,end_place),如果数组里有 个不同的值,那么调用后数组的前 个位置将会是这些不同的值有序排列,重复的值会被移动到数组后面。现在有个问题:我们怎么知道 是多少呢?不用担心,unique 函数是有返回值的!它的返回值是指向这 个数的下一个位置的指针,所以用这个指针减去
begin_place得出来的数字就是 了。至此我们已经学会了使用这两个函数,只要对输入的数列进行简单运用就可以通过此题。
(完)
代码
#include<bits/stdc++.h> using namespace std; int n,a[200]; int main(){ cin >> n; for(int i = 1;i <= n;i ++) cin >> a[i]; sort(a + 1,a + n + 1);//排序 n = unique(a + 1,a + n + 1) - (a + 1);//去重,并把去重后的元素个数记为 n printf("%d\n",n);//输出去重后的元素个数 for(int i = 1;i <= n;i ++) printf("%d ",a[i]);//输出去重后的元素 printf("\n"); return 0; }
- 1
信息
- ID
- 61
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 2
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者