{A} + {B}

韓小妹發表於2018-08-12

給你兩個集合,要求{A} + {B}. 
注:同一個集合中不會有兩個相同的元素.

Input

每組輸入資料分為三行,第一行有兩個數字n,m(0<n,m<=10000),分別表示集合A和集合B的元素個數.後兩行分別表示集合A和集合B.每個元素為不超出int範圍的整數,每個元素之間有一個空格隔開.

Output

針對每組資料輸出一行資料,表示合併後的集合,要求從小到大輸出,每個元素之間有一個空格隔開.

Sample Input

1 2
1
2 3
1 2
1
1 2

Sample Output

1 2 3
1 2

AC碼:

#include<stdio.h>
#include<algorithm>
using namespace std;
const int maxn=10010;
int a[maxn],b[maxn];
const int MAX=20020;
int c[MAX];
int main()
{
	int n,m;
	while(~scanf("%d %d",&n,&m))
	{
		int k=0;
		for(int i=0;i<n;i++)
		{
			scanf("%d",&a[i]);
			c[k++]=a[i];
		}
		for(int i=0;i<m;i++)
		{
			scanf("%d",&b[i]);
			c[k++]=b[i];
		}
		sort(c,c+k);
		printf("%d",c[0]);
		for(int i=1;i<k;i++)
		{
			if(c[i]==c[i-1])
			continue;
			else
			printf(" %d",c[i]);
		}
		printf("\n");
	}
	return 0;
}

方法二:

利用set容器去掉重複的,與set的預設排序。

#include<iostream>
#include<set>
using namespace std;
set<int>s;
int main()
{
	int n,m,a;
	while(cin>>n>>m)
	{
		for(int i=1;i<=n+m;i++)
		{
			cin>>a;
			s.insert(a);
		}
		set<int>::iterator it=s.begin();
		cout<<*it;
		it++;
		while(it!=s.end())
		{
			cout<<" "<<*it;
			it++;
		}
		cout<<endl;
		s.clear() ;
	}
	return 0;
 } 

 

相關文章