合并
时间限制:3000 ms | 内存限制:65535 KB
难度:0
描述
现在给你两堆数,每个堆中有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
水题也要作出风格
AC的代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int t;
vector<int>aa;
vector<int>::iterator pos;
scanf("%d",&t);
while (t--)
{
int n,i,j,k,a[1100],b[1100];
scanf("%d",&n);
memset(b,1000,sizeof(b));
for (i=0; i<n; i++)
{
scanf("%d",&a[i]);
aa.push_back(a[i]);
}
for(i=0; i<n; i++)
{
scanf("%d",&b[i]);
aa.push_back(b[i]);
}
sort(aa.begin(),aa.end());
pos=unique(aa.begin(),aa.end());
aa.erase(pos,aa.end());
for (i=0; i<aa.size(); i++)
printf("%d ",aa[i]);
printf("\n");
aa.clear();
}
return 0;
}