求并集(数组)
时间限制: 1s
类别: DS:数组与链表->数组
问题描述
使用数组编程:
有两个集合,求其并集并输出。
要求:先输入集合A,再输入集合B,然后将B中(不属于集合A)的元素按顺序插入到A的后面(保持在B中的顺序),最后输出集合A(结果)的内容
输入说明
第一行输入集合A:
第一个整数m(0<=m<=100),表示集合A共有m个元素,其后有m个整数,表示集合A的元素
第二行输入集合B:
第一个整数n(0<=n<=100),表示集合B共有n个元素,其后有n个整数,表示集合B的元素
输出说明
输出集合A和集合B的并集,输出的内容都是整数,数字之间以一个空格分隔。(后面没有多余的空行以及空格)
输入范例
4 1 3 5 7
4 2 4 6 8
输出范例
1 3 5 7 2 4 6 8
#include <iostream>
#include <string>
#include<vector>
#include<algorithm>
using namespace std;
void out(const int a[],int length)
{
for(int i = 0;i<length-1;i++){
cout<<a[i]<<' ';
}
cout<<a[length-1]<<endl;
}
void in(int *a,int length){
for(int i = 0;i<length;i++){
cin>>a[i];
}
}
bool pd(const int *a,int length,int elem){
for(int i = 0;i<length;i++){
if(a[i] == elem){
return true;
}
}
return false;
}
int main()
{
int m,n;
cin>>m;
int a[m];
in(a,m);
cin>>n;
int b[n];
in(b,n);
int c[m+n];
for(int i = 0;i<m;i++){
c[i] = a[i];
}
int cl = m;
for(int i = 0;i<n;i++){
if(pd(c,cl,b[i])){
continue;
}else{
c[cl] = b[i];
cl++;
}
}
out(c,cl);
return 0;
}