任意给定两个包含1-30000个元素的集合A,B(集合中元素类型为任意整型数,且严格递增排列),求A交B、A并B、A-B和B-A集合。
标签:
考察知识点:有序表合并,时间复杂度O(n),空间复杂度O(n)
#include<bits/stdc++.h> #define BEND(x) x.begin(),x.end() #define INS(x) insert_iterator<set<int> >(x,x.begin()) using namespace std; set<int> :: iterator it; set<int> A,B,C; void puts(set<int> &S){ for(it = S.begin(); it != S.end(); ++it){ if(it == S.begin()) cout<<*it; else cout<<" "<<*it; } printf("\n"); } int main(){ int cases, n, m, i = 1; cin>>cases; while(i<=cases){ cout<<"Case #"<<i++<<":"<<endl; A.clear();B.clear(); cin>>n; while(n--){ cin>>m; A.insert(m); } cin>>n; while(n--){ cin>>m; B.insert(m); } C.clear(); set_intersection(BEND(A),BEND(B),INS(C)); puts(C); C.clear(); set_union(BEND(A),BEND(B),INS(C)); puts(C); C.clear(); set_difference(BEND(A),BEND(B),INS(C)); puts(C); C.clear(); set_difference(BEND(B),BEND(A),INS(C)); puts(C); } }
(c++ 实现)山东科技大学 oj 求集合的交并补集(数据结构习题)
标签:
原文地址:http://www.cnblogs.com/cwenliu/p/5873043.html