HDU 1412: {A} + {B} ← STL set

【问题来源】
Problem - HDU 1412

【问题描述】
给你两个集合,要求{A} + {B}。
注:同一个集合中不会有两个相同的元素。

【输入格式】
每组输入数据分为三行,第一行有两个数字n,m(0<n,m<=10000),分别表示集合A和集合B的元素个数。
后两行分别表示集合A和集合B。每个元素为不超出int范围的整数,每个元素之间有一个空格隔开。

【输出格式】
针对每组数据输出一行数据,表示合并后的集合,要求从小到大输出,每个元素之间有一个空格隔开。

【输入输出样例】
输入:
2 5
3 2
1 5 2 3 2
2 2
6 8
6 2

输出:
1 2 3 5
2 6 8

【算法代码】

#include<iostream>
#include<set>
using namespace std;

set<int> z; //STL set有自动升序排序及去重功能

int main() {
	int n,m;
	int x;

	while(scanf("%d%d",&n,&m)!=EOF) {
		for(int i=0; i<n; i++) { //输入集合A的元素
			scanf("%d",&x);
			z.insert(x);
		}
		for(int i=0; i<m; i++) { //输入集合B的元素
			scanf("%d",&x);
			z.insert(x);
		}

		int flag=0;
		for(set<int>::iterator it=z.begin(); it!=z.end(); it++) { //格式化输出集合元素
			if(flag) {
				printf(" %d",*it);
			}
			if(!flag) {
				flag=1;
				printf("%d",*it);
			}
		}

		printf("\n");
		z.clear();
	}

	return 0;
}


/*
in:
2 5
3 2
1 5 2 3 2
2 2
6 8
6 2

out:
1 2 3 5
2 6 8
*/

【参考文献】
https://blog.csdn.net/wr132/article/details/43195331


 

猜你喜欢

转载自blog.csdn.net/hnjzsyjyj/article/details/121380560