给你两个集合,要求{A} + {B}.
注:同一个集合中不会有两个相同的元素.
Input
每组输入数据分为三行,第一行有两个数字n,m(0
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<math.h>
#include<queue>
#include<stack>
#include<map>
#include<vector>
#define LL long long
#define M 1000000
#define inf 0x3f3f3f3f
#define mod 100009
using namespace std;
int arr[M];
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
int i,j;
for(i=0;i<n+m;i++)
scanf("%d",&arr[i]);
sort(arr,arr+m+n);
int k=unique(arr,arr+m+n)-arr; //去重函数
printf("%d",arr[0]);
for(i=1;i<k;i++)
printf(" %d",arr[i]);
putchar('\n');
}
return 0;
}
第二种
用set 集合来存数据
代码
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<math.h>
#include<queue>
#include<stack>
#include<map>
#include<vector>
#include<set>
#define LL long long
#define M 1000000
#define inf 0x3f3f3f3f
#define mod 100009
using namespace std;
set<int>S;
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
int i,j;
S.clear();
for(i=0;i<n+m;i++)
{
int a;
scanf("%d",&a);
S.insert(a); // 插入
}
set<int>::iterator it; //迭代器
int flage=1;
for(it=S.begin();it!=S.end();it++)
{
if(flage) printf("%d",*it),flage=0;
else
printf(" %d",(*it));
}
putchar('\n');
}
return 0;
}