EOJ 2844 排序去重
有 n 个 1 到 1000 之间的整数 (1≤n≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉。然后再按照指定的排序方式把这些数排序。
Input
第 1 行为字母 A 或 D,A 表示按照升序排序,D 表示按照降序排序。
第 2 行开始有若干个用一个空格或换行符分隔的正整数。
Output
相互之间用一个空格分隔的经去重和排序后的正整数。最后一个数后没有空格。
Examples
A
20 40 32 67 40 20 89 300 400 15
15 20 32 40 67 89 300 400
方法多多, 可以用flag数组记录取用与否,可以用set,可以用vector后unique_copy
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int cmp1(const void *a,const void *b){return *(int*)b-*(int*)a;}
int cmp2(const void *a,const void *b){return *(int*)a-*(int*)b;}
int main()
{
char c;
int a[],l,tmp;
int flag[]={};
scanf("%c\n",&c);
int i=,j,k;
while(scanf("%d",&tmp)!=EOF)
{
if(flag[tmp]==)
{
a[i++]=tmp;
flag[tmp]=;
}
}
if(c=='A') qsort(a,i,sizeof(a[]),cmp2);
if(c=='D') qsort(a,i,sizeof(a[]),cmp1);
for(j=;j<i-;j++) printf("%d ",a[j]);
printf("%d\n",a[j]);
return ;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp(const int a,const int b){return a>b;}
int main()
{
char c;cin>>c;
int tmp;
vector<int> v,vv;
while(cin>>tmp) v.push_back(tmp);
if(c=='D')
sort(v.begin(),v.end(),cmp);
else
sort(v.begin(),v.end());
unique_copy(v.begin(),v.end(),back_inserter(vv));
for(auto& x:vv) cout<<x<<' ';
return ;
}
#include <iostream>
#include <algorithm>
#include <vector>
bool cmp(int i,int j)
{return (i<j);} using namespace std; int main ()
{
int b,i=;
char c;
cin>>c;
vector<int> v;
while(cin>>b)
{
v.push_back(b);
}
sort(v.begin(),v.end(),cmp); if(c=='A')
{
vector<int>::iterator it=v.begin();
cout<<*(it++);
for(;it!=v.end();it++)
{
if(*(it)==*(it-)) continue;
cout<<' '<<*(it);
}
}
if(c=='D')
{
vector<int>::iterator it=v.end()-;
cout<<*(it--);
for(;it>=v.begin();it--)
{
if(*(it)==*(it+)) continue;
cout<<' '<<*(it);
}
} return ;
}
EOJ 2844 排序去重的更多相关文章
- NX二次开发-C++的vector排序去重用法
#include <algorithm> //vector排序去重 sort( BoxNum.begin(), BoxNum.end()); BoxNum.erase(unique(Box ...
- 利用BitMap进行大数据排序去重
1.问题 问题提出: M(如10亿)个int整数,只有其中N个数重复出现过,读取到内存中并将重复的整数删除. 2.解决方案 问题分析: 我们肯定会先想到在计算机内存中开辟M个int整型数据数组,来on ...
- Linux sort 排序 去重 统计
先写一个命令: cut -d' ' -f1 ~/.bash_history|sort -d | uniq -c|sort -nr|head 这个命令可以统计你历史上输入的命令的次数的前十条 整个命令基 ...
- js实现排序去重计算字符次数
/*去重*/ var arr=[1,4,4,7,3,9,0,3,2,1,"你好","你","你好","你 "]; var ...
- set自动排序去重 stringstream流分割字符
链接:https://vjudge.net/problem/UVA-10815#author=0 题意:给几段句子,按字典序筛选出单词. 题解:用C的话太麻烦,不如用自动去重并排序的set容器.有个地 ...
- Linux中sort和uniq关于排序去重的那些用法
相信在Linux下对文件操作经常会用到sort和uniq命令,下面系统的介绍一下这两个命令的用法. sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出.sort命令既可以从特 ...
- shell不排序去重
一条命令搞定: awk '!a[$0]++' file 如果是第一次出现a[$0]++的值为0(假),而!a[$0]++的值就为1(真),之后就执行print $0 第二次或者两次以上的出现a[$ ...
- 通过bitmap对100w数字进行排序去重
首先生成100w随机数,控制最大数 <?php $i = 0; do{ $i++; $num = rand(0, 999999); echo $num."\n"; }whil ...
- SqlServer中的UNION操作符在合并数据时去重的原理以及UNION运算符查询结果默认排序的问题
本文出处:http://www.cnblogs.com/wy123/p/7884986.html 周围又有人在讨论UNION和UNION ALL,对于UNION和UNION ALL,网上说的最多的就是 ...
随机推荐
- js-事件处理(重点)
1:各种常用事件: 2:简单用法: <body onLoad="javascript:alert('hello world');" onUnload="javasc ...
- hibernate_08_关联映射_一对多
hibernate的映射关系 一对多.多对一.一对一.多对多. 常用的是一对多和多对一. 在数据库中可以通过添加主外键的关联,表现一对多的关系:在hibernate中通过在一方持有多方的集合实现,即在 ...
- react基础篇二
组件 & Props & 生命周期 组件可以将UI切分成一些独立的.可复用的部件,这样你就只需专注于构建每一个单独的部件. 组件从概念上看就像是函数,它可以接收任意的输入值(称之为“p ...
- (转)Arcgis for JS之对象捕捉
http://blog.csdn.net/gisshixisheng/article/details/44098615 在web操作,如绘制或者测量的时候,为了精确,需要捕捉到某一图层的对象,在此,讲 ...
- webpack学习(二)
时下很火的react项目多用到webpack+ES6,本文只实践webpack的打包功能,不涉及react. 1.新建项目 新建的项目,命令模式下切换到项目根路径,用npm init命令生成packa ...
- Mysql [Err] 1118 - Row size too large
首先声明,对MySQL不懂,很多都不知道原因 设计了一个表,里面很多text字段,然后填进去的东西太多(用的是Python的MySQLdb),报错: _mysql_exceptions.Operati ...
- Linux基础:find命令总结
本文只总结一些常用的用法,更详细的说明见man find和 info find. find命令 find命令常用来查找文件或目录,可以根据给定的路径和表达式查找所需的文件或目录.该工具是由findut ...
- 为 Elasticsearch 添加中文分词,对比分词器效果
转自:http://keenwon.com/1404.html 为 Elasticsearch 添加中文分词,对比分词器效果 Posted in 后端 By KeenWon On 2014年12月12 ...
- iphone 事件冒泡规则
今天碰到的一个比较烦人的问题是,在body上添加事件处理函数,发现在iphone上怎么也没办法触发事件,找了半天,发现iPhone处理冒泡事件的规则: 1.点击某个元素: 2.如果这个元素上没有处理该 ...
- noip模板复习
自己敲模板还是有很多容易错的地方 写在注释里面了 LCA #include<bits/stdc++.h> #define REP(i, a, b) for(register int i = ...