1. 程式人生 > >C:去重並排序(陣列)flag

C:去重並排序(陣列)flag

描述

現在給你兩堆數,每個堆中n個數。你的任務是把這兩個堆成一個堆,並把合併後的堆中的元素按從小到大的順序輸出。例如n=5時,一個堆是{1,2,3,4,5},第二個堆是{5,6,7,8,9}那麼你就應該輸出1 2 3 4 5 6 7 8 9。(一堆中可能有重複的數)

輸入
第一行輸入一個整數T(1≤T≤100),表示有T組測試資料。
每組資料先輸入一個整數N(1≤N≤10),表示每個堆中元素的個數。然後輸入N個整數A(0≤A<100),最後輸入N個整數B(0≤B<100)。
輸出
把合併後的堆中的元素按從小到大的順序輸出。
樣例輸入
2
5
1 2 3 4 5
5 6 7 8 9
6
18 88 43 5 10 78 
94 99 37 92 3 52 
樣例輸出
1 2 3 4 5 6 7 8 9 
3 5 10 18 37 43 52 78 88 92 94 99 

答案:

#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
    int n,num=0;
    scanf("%d",&n);
    while(n--)
    {
        int m,i,j,a[10000];
        scanf("%d",&m);
        for(i=0; i<2*m; i++)
        {
            scanf("%d",&a[i]);
        }
        sort(a,a+2*m);
        int flag=a[0];
        printf("%d ",a[0]);
        for(i=1; i<2*m; i++)
        {

            if(flag!=a[i])
            {
                printf("%d ",a[i]);
                flag=a[i];
            }
        }
        printf("\n");
    }
}