問題描述
給出兩個整數集合a、b,求出他們的交集、並集以及b在a中的餘集。
輸入格式
第一行為乙個整數n,表示集合a中的元素個數。
第二行有n個互不相同的用空格隔開的整數,表示集合a中的元素。
第三行為乙個整數m,表示集合b中的元素個數。
第四行有m個互不相同的用空格隔開的整數,表示集合b中的元素。
集合中的所有元素均為int範圍內的整數,n、m<=1000。
輸出格式
第一行按從小到大的順序輸出a、b交集中的所有元素。
第二行按從小到大的順序輸出a、b並集中的所有元素。
第三行按從小到大的順序輸出b在a中的餘集中的所有元素。
樣例輸入
5
1 2 3 4 5
5
2 4 6 8 10
樣例輸出
2 4
1 2 3 4 5 6 8 10
1 3 5
樣例輸入
4
1 2 3 4
3
5 6 7
樣例輸出
1 2 3 4 5 6 7
1 2 3 4
方法一:利用stl中set有序性與查詢函式實現
#include #include#include
#include
#include
#include
#define ci cin.tie(0)
#define ios ios::sync_with_stdio(false)
#define fi first
#define se second
using
namespace
std;
typedef
long
long
ll;typedef pair
pii;
const
int n = 1010
;int
n, m, x;
seta, b, unio;
vector
inter, resi;
intmain()
cin >>m;
for (int i = 0; i < m; i ++)
//交集
set::iterator it;
for (it = a.begin(); it != a.end(); it ++)
//交集
for (it = a.begin(); it != a.end(); it ++)
unio.insert(*it);
for (it = b.begin(); it != b.end(); it ++)
unio.insert(*it);
//餘集
for (it = a.begin(); it != a.end(); it ++)
//列印答案
for (int i = 0; i < inter.size(); i ++)
cout
<< inter[i] << '';
cout
cout
<< *it << '';
cout
cout
<< resi[i] << '';
cout
}
方法二:利用自帶函式求解
#include #include#include
#include
#include
#include
#define ci cin.tie(0)
#define ios ios::sync_with_stdio(false)
#define fi first
#define se second
using
namespace
std;
typedef
long
long
ll;typedef pair
pii;
const
int n = 1010
;int
n, m, x;
vector
a, b, c;
void print(vector &c)
intmain()
sort(a.begin(), a.end());
cin >>m;
for (int i = 0; i < m; i ++)
sort(b.begin(), b.end());
set_intersection(a.begin(), a.end(), b.begin(), b.end(), back_inserter(c));
print(c);
set_union(a.begin(), a.end(), b.begin(), b.end(), back_inserter(c));
print(c);
set_difference(a.begin(), a.end(), b.begin(), b.end(), back_inserter(c));
print(c);
return0;
}
**自部落格
試題 演算法訓練 集合運算 藍橋杯
題目描述 資源限制 時間限制 1.0s 記憶體限制 512.0mb 問題描述 給出兩個整數集合a b,求出他們的交集 並集以及b在a中的餘集。輸入格式 第一行為乙個整數n,表示集合a中的元素個數。第二行有n個互不相同的用空格隔開的整數,表示集合a中的元素。第三行為乙個整數m,表示集合b中的元素個數。...
演算法訓練 集合運算
問題描述 給出兩個整數集合a b,求出他們的交集 並集以及b在a中的餘集。輸入格式 第一行為乙個整數n,表示集合a中的元素個數。第二行有n個互不相同的用空格隔開的整數,表示集合a中的元素。第三行為乙個整數m,表示集合b中的元素個數。第四行有m個互不相同的用空格隔開的整數,表示集合b中的元素。集合中的...
演算法訓練 集合運算
問題描述 給出兩個整數集合a b,求出他們的交集 並集以及b在a中的餘集。輸入格式 第一行為乙個整數n,表示集合a中的元素個數。第二行有n個互不相同的用空格隔開的整數,表示集合a中的元素。第三行為乙個整數m,表示集合b中的元素個數。第四行有m個互不相同的用空格隔開的整數,表示集合b中的元素。集合中的...