蒜头君的随机数

解析

两种做法

第一种用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;
}

猜你喜欢

转载自www.cnblogs.com/KyleDeng/p/9222294.html
今日推荐