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,网上说的最多的就是 ...
随机推荐
- L4课程_Firebase_笔记分享_StudyJams_2017
最近才发现Study Jams China的官方论坛也支持MarkDown,所以就直接把笔记发在了那儿. http://www.studyjamscn.com/thread-21855-1-1.htm ...
- 去除DialogFragment的背景阴影,背景色,标题栏
style中: <resources xmlns:android="http://schemas.android.com/apk/res/android"> <s ...
- Linux之tar.gz file
A tarball (tar.gz file) is compressed tar archive. The tar program provides the ability to create ta ...
- C++的Android接口---配置NDK
一. 在安卓工具网站下载ADT:http://tools.android-studio.org/index.php 参考链接:http://1527zhaobin.iteye.com/blog/186 ...
- EF test
LibraryEntities db = new LibraryEntities(); private void btnSelect_Click(object sender, EventArgs e) ...
- Tomcat的几种部署方式
1. 直接把项目的根目录放在: apache-tomcat-*.*\webapps\ROOT 这样即可以通过http://127.0.0.1:8080 来访问 2. 把项目根目录放在: apach ...
- windows控制台(console)乱码
在cmd中输入 CHCP 65001,实操有效.记录一下 永久设置,代码如下: Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Cons ...
- IDEA返回上一步
在开发中进入一个方法后想要到原来那行 ctrl+alt+左 回到上一步 ctrl+alt+右 回到下一步
- 09.正则表达式re-2.complie函数
compile 函数用于编译正则表达式,生成一个 Pattern 对象,它的一般使用形式如下: import re # 将正则表达式编译成 Pattern 对象 pattern = re.compil ...
- cxdbtreelist的处理点滴
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAuAAAAE8CAIAAAAOqJOXAAAgAElEQVR4nOy9eXAcV37n+bwzf21sbO ...