注:同一个集合中不会有两个相同的元素.
1 2 1 2 3 1 2 1 1 2
1 2 3 1 2
这道题我的思路是 录入两个集合的元素,然后排序,去重输出就可以了,开始时用c++自带的sort函数,但总是wa 后来发现可能是排序的时间不行,就改用了快排。
去重和输出合并在一起了。
#include<iostream>
using namespace std;
int aa[20001];
int partition(int A[],int p,int r)
{
int t,x=A[r];
int i=p-1;
for(int j=p;j<r;j++)
{
if(A[j]<x)
{
i++;
t=A[j];A[j]=A[i];A[i]=t;
}
}
i++;
t=A[r];A[r]=A[i];A[i]=t;
return i;
}
void quicksort(int A[],int p,int r)
{
int q;
if(p<r)
{
q=partition(A,p,r);
quicksort(A,p,q-1);
quicksort(A,q+1,r);
}
}
int main()
{
int a,b,i,n;
while(cin>>a>>b)
{
n=a+b;
for(i=0;i<n;i++)
cin>>aa[i];
//sort(aa,aa+n-1);
quicksort(aa,0,n-1);
cout<<aa[0];
for(i=1;i<n;i++)
{
if(aa[i]!=aa[i-1])
cout<<" "<<aa[i];
}
cout<<endl;
}
}