• 蒜头君的随机数


    解析

    两种做法

    第一种用set。

    第二种,先建立一个数组,读入每个数时打好标记,立个flag计重。由于数组不方便存储(中间如果重复的话有间隔),所以用vector,最后排好序输出(也可以先排序再去重)

    代码

    方法一

    #include<bits/stdc++.h>
    using namespace std;
    int n;
    int num;
    int countor;
    set<int> grades;
    int main()
    {
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            int flag=grades.size();
            cin>>num;
            grades.insert(num);
            if(grades.size()==flag) countor++;
            else continue;
        }
        cout<<n-countor<<endl;
        set<int>::iterator it;//迭代器存储指针 
        for(it=grades.begin();it!=grades.end();it++)
        {
            if(it==grades.begin()) cout<<*it;
            else cout<<" "<<*it;//输出格式方案,第一个前不带空格,后面所有的为空格+*t 
        }
        cout<<endl;
    }

    方法二

    #include<bits/stdc++.h>
    using namespace std;
    int a[100];
    vector<int> vn;
    int n;
    int main()
    {
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i];
        }
        sort(a+1,a+n+1);//排序 
        int sum=0; 
        for(int i=1;i<=n;i++)
        {
            if(i==1)
            {
                vn.push_back(a[i]);
                sum++;
            }
            else
            {
                if(a[i]!=a[i-1])
                {
                    vn.push_back(a[i]);
                    sum++;
                }
                else continue;//因为是排好序的序列,所以只需要跟自己前面的成员比较异同,相同则重复。 
            }
        }
        cout<<sum<<endl;
        for(int i=0;i<=vn.size()-1;i++)
        {
            if(i==vn.size()-1) 
            {
                cout<<vn[i]<<endl;
            }
            else cout<<vn[i]<<" ";
        }
        return 0;
    }
  • 相关阅读:
    栈的概念
    什么是 JavaConfig?
    数据库连接池的原理。为什么要使用连接池。
    根据你以往的经验简单叙述一下MYSQL的优化
    动态横切
    横切技术
    什么是AOP
    BIO ,NIO ,AIO 有什么区别?
    简述Comparable和Comparator两个接口的区别
    Spring Boot 客户端?
  • 原文地址:https://www.cnblogs.com/KyleDeng/p/9222294.html
Copyright © 2020-2023  润新知