码迷,mamicode.com
首页 > 其他好文 > 详细

P1059 明明的随机数及unique去重的用法

时间:2020-06-30 17:32:24      阅读:64      评论:0      收藏:0      [点我收藏+]

标签:cto   class   namespace   ima   代码   main   应用   图片   返回   

unique 去重

返回去重之后的指针,仍然为前闭后开,可计算出去重后的元素个数m。

把一个vector去重:

int m=unique(a.begin(),a.end())-a.begin();

把一个数组去重,元素存放在下标1~n:

int m=unique(a+1,a+n+1)-(a+1);

注意:使用unique之前必须先进行一遍sort排序,否则去重会无法进行!

unique并没有将重复的元素删除,而是把重复的元素按照原来在数组中的位置放到了数组的最后面。

下面是一道unique的应用题:

技术图片

 

 首先,sort和unique函数都位于<algorithm>库中,故不要忘记写头文件。对n和数组进行定义和输入输出:

#include<iostream>
#include<algorithm>
using namespace std;
int n,i,j;
int a[105];
int main(){
    cin>>n;
    for(i=1;i<=n;i++){
        cin>>a[i];    
    }
    return 0;
} 

因为最后都要按顺序输出,加之unique要先排序才能去重,所以我们先sort排序。

#include<iostream>
#include<algorithm>
using namespace std;
int n,i,j;
int a[105];
int main(){
    cin>>n;
    for(i=1;i<=n;i++){
        cin>>a[i];    
    }
    sort(a+1,a+n+1); 
    return 0;
} 

然后我们定义一个变量m记录排序后的元素个数,并进行去重,输出m。

#include<iostream>
#include<algorithm>
using namespace std;
int n,i,j,m;
int a[105];
int main(){
    cin>>n;
    for(i=1;i<=n;i++){
        cin>>a[i];    
    }
    sort(a+1,a+n+1); 
    m=unique(a+1,a+n+1)-(a+1);
    cout<<m<<endl;
    return 0;
} 

最后只需要从1到m输出已排好的数即可。

完整代码:

#include<iostream>
#include<algorithm>
using namespace std;
int n,i,j,m;
int a[105];
int main(){
    cin>>n;
    for(i=1;i<=n;i++){
        cin>>a[i];    
    }
    sort(a+1,a+n+1);
    m=unique(a+1,a+n+1)-(a+1);
    cout<<m<<endl;
    for(i=1;i<=m;i++){
        cout<<a[i]<< ;
    }
    return 0;
} 

 

P1059 明明的随机数及unique去重的用法

标签:cto   class   namespace   ima   代码   main   应用   图片   返回   

原文地址:https://www.cnblogs.com/qianr/p/13214732.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!