题目描述
给你两个集合,要求{A} + {B}。
注:同一个集合中不会有两个相同的元素。
输入
每组输入数据分为三行,第一行有两个数字n,m(0<n,m<=10000),分别表示集合A和集合B的元素个数。后两行分别表示集合A和集合B。每个元素为不超出int范围的整数,每个元素之间有一个空格隔开。
输出
针对每组数据输出一行数据,表示合并后的集合,要求从小到大输出,每个元素之间有一个空格隔开。
样例输入 Copy
1 2
1
2 3
1 2
1
1 2
样例输出 Copy
1 2 3
1 2
代码
#include<cstdio>
#include<set>
#include<iostream>
using namespace std;
int main()
{
int n, m, x;
while (cin >> n >> m)
{
set <int> s;
for (int i = 0; i < n+m; i++)
{
cin >> x;
s.insert(x);
}
printf("%d", *s.begin());
s.erase(s.begin());
while(!s.empty())
{
printf(" %d", *s.begin());
s.erase(s.begin());
}
puts("");
}
return 0;
}
#include<iostream>
#include<set>
using namespace std;
int main()
{
int a,b;
set<int> s;
while(scanf("%d%d",&a,&b)!=EOF){
s.clear();
int t;
for(int i=0;i<a;i++){
scanf("%d",&t);
s.insert(t);
}
for(int i=0;i<b;i++){
scanf("%d",&t);
s.insert(t);
}
set<int>:: iterator it = s.begin();
while(it != s.end()){
cout<<*it;
if(++it != s.end())
cout<<" ";
}
cout<<endl;
}
return 0;
}
#include<cstdio>
#include<iostream>
#include<set>
using namespace std;
int main(){
int n,m;
while(cin>>n>>m){
set<int> se1,se2;
set<int>::iterator it;
set<int>::iterator it2;
int i,j;
for(i=0;i<n;i++){
cin>>j;
se1.insert(j);
}
for(i=0;i<m;i++){
cin>>j;
se2.insert(j);
}
se1.insert(se2.begin(),se2.end());//合并两个set容器
while(1){
it2=se1.begin();
for(it=se1.begin();it!=se1.end();it++,it2++){
if(++it2!=se1.end()){
cout<<*it<<' ';
it2--;
}
}
it--;//判断最后一个,注意格式问题
cout<<*it<<endl;
break;
}
}
return 0;
}