题意:合成一个集合后不能有同样的元素出现;
思路:我们可以将其都输出入到一个数组中,然后进行排序,因为来自两个不同的集合,所以相同的元素的话只可能有两个,而排序后他们两个肯定是在相邻的位置,所以输出的时候判断着输出就行了,如果相邻位置相同那么就不输出~
代码语言:javascript复制#include <iostream>
using namespace std;
int main()
{
int C[20000];
int n,m,a;
while(cin>>n>>m&&n>0&&m>0&&n<=10000&&m<=10000)
{
for(int i=0; i<n m; i)
{
cin>>C[i];
}
for(int i=0; i<n m; i)
for(int j=0; j<n m-1; j)
if(C[j]>C[j 1])
{
a=C[j];
C[j]=C[j 1];
C[j 1]=a;
}
cout<<C[0];
for(int i=1; i<n m; i)
{
if(C[i]==C[i-1])
{
continue;
}
else
{
cout<<" "<<C[i];
}
}
cout<<endl;
}
return 0;
}
下面我们看下set的做法~
代码语言:javascript复制#include<bits/stdc .h>
using namespace std;
set<int> A;
set<int> B;
int main(){
int a,b;
while(cin>>a>>b){
int n;
while(a--){
cin>>n;
A.insert(n);
}
while(b--){
cin>>n;
B.insert(n);
}
set<int>::iterator it;
for(it = B.begin();it != B.end();it ){
A.insert(*it);
}
for(it = A.begin();it != A.end();it ){
if(it == A.begin())
cout<<*it;
else{
cout<<" "<<*it;
}
}
cout<<endl;
A.clear();
B.clear();
}
return 0;
}