zoukankan      html  css  js  c++  java
  • EOJ 2844 排序去重

    n11000 之间的整数 (1n100),对于其中重复的数字,只保留一个,把其余相同的数去掉。然后再按照指定的排序方式把这些数排序。

    Input

    第 1 行为字母 ADA 表示按照升序排序,D 表示按照降序排序。

    第 2 行开始有若干个用一个空格或换行符分隔的正整数。

    Output

    相互之间用一个空格分隔的经去重和排序后的正整数。最后一个数后没有空格。

    Examples

    Input
    A
    20 40 32 67 40 20 89 300 400 15
    
    Output
    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[100],l,tmp;
        int flag[1001]={0};
        scanf("%c
    ",&c);
        int i=0,j,k;
        while(scanf("%d",&tmp)!=EOF)
        {
            if(flag[tmp]==0)
            {
                a[i++]=tmp;
                flag[tmp]=1;
            }
        }
        if(c=='A') qsort(a,i,sizeof(a[0]),cmp2);
        if(c=='D') qsort(a,i,sizeof(a[0]),cmp1);
        for(j=0;j<i-1;j++)    printf("%d ",a[j]);
        printf("%d
    ",a[j]);
        return 0;
    }
    #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 0;
    }
     1 #include <iostream>
     2 #include <algorithm>
     3 #include <vector>
     4 bool cmp(int i,int j)
     5 {return (i<j);}
     6 
     7 using namespace std;
     8 
     9 int main ()
    10 {
    11   int b,i=5;
    12   char c;
    13   cin>>c;
    14   vector<int> v;
    15   while(cin>>b)
    16   {
    17     v.push_back(b);
    18   }
    19   sort(v.begin(),v.end(),cmp);
    20 
    21   if(c=='A')
    22   {
    23         vector<int>::iterator it=v.begin();
    24         cout<<*(it++);
    25         for(;it!=v.end();it++)
    26         {
    27             if(*(it)==*(it-1)) continue;
    28             cout<<' '<<*(it);
    29         }
    30   }
    31   if(c=='D')
    32   {
    33     vector<int>::iterator it=v.end()-1;
    34         cout<<*(it--);
    35         for(;it>=v.begin();it--)
    36         {
    37             if(*(it)==*(it+1)) continue;
    38             cout<<' '<<*(it);
    39         }
    40   }
    41 
    42   return 0;
    43 }
  • 相关阅读:
    vue loading 插件编写与实战
    vue tab切换的几种方式
    IOS安卓常见问题
    vue.js 跨域的解决方法(转载)
    vue 根据设计稿rem适配
    vuex 文件夹目录整理
    vue项目优化之路由懒加载
    flutter 环境配置-01
    锚点 定位 导航 滑动
    居中 子元素无固定 宽高
  • 原文地址:https://www.cnblogs.com/Jiiiin/p/8617336.html
Copyright © 2011-2022 走看看