1988-B. 有序集合

描述

在C++里,有一个神奇的东西,叫做STL,这里提供了很多简单好用的容器,用来实现常用又很难书写的数据结构,如栈(stack)等。其中,有一个容器叫set,译作“有序集合”。首先,这是一个集合,所以不存在相同的元素,其次,集合中的元素按从小到大排列。 现在,需要你把一列不符合“有序集合”要求的整数规范化,通过以下两个步骤: 1、去重:去掉重复的元素 2、排序:按从小到大顺序将元素排序 请问,最终得到的有序集合是怎样的呢?

输入

第一行包含一个正整数T (1≤T≤100),表示有T组测试用例。 每组用例有两行,第一行包含一个正整数N(1≤N≤100),第二行有N个正整数,以空格分隔,表示未规范成“有序集合”的数列。每个正整数不超过1000.

输出

每组用例输出一行,表示规范后的“有序集合”,数字以空格分隔。

样例输入

2

4

1 25 640 1000

10

20 40 32 67 40 20 89 329 400 15

样例输出

1 25 640 1000

15 20 32 40 67 89 329 400

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
    //freopen("a.txt","r",stdin);
    int t;
    cin>>t;
    while(t--)
    {
        int n,*a,i,j;
        cin>>n;
        a=(int *)malloc(n*sizeof(int));
        memset(a,0,sizeof(a));
        for(i=0;i<n;i++)
            cin>>a[i];
        for(i=0;i<n;i++)
            for(j=i;j<n;j++)
                if(a[i]>a[j])
                    swap(a[i],a[j]);
        for(i=0;i<n;i++)
        {
            while(a[i]==a[i+1])
            {
                for(j=i;j<n;j++)
                    a[j]=a[j+1];
                n--;
            }
        }
        for(i=0;i<n-1;i++)
            cout<<a[i]<<" ";
        cout<<a[n-1]<<endl;
    }
    return 0;
}

  

原文地址:https://www.cnblogs.com/Rosanna/p/3438671.html