Problem STL 集合運算

2021-07-31 20:08:20 字數 1640 閱讀 3073

time limit: 1 sec  

memory limit: 128 mb

submit: 3767  

solved: 1927 [

submit][

status][

web board]

集合的運算就是用給定的集合去指定新的集合。設a和b是集合,則它們的並差交補集分別定義如下:

a∪b=

a∩b=

a-b=

sa =

sb =

第一行輸入乙個正整數t,表示總共有t組測試資料。(t<=200)

然後下面有2t行,每一行都有n+1個數字,其中第乙個數字是n(0<=n<=100),表示該行後面還有n個數字輸入。

對於每組測試資料,首先輸出測試資料序號,」case #.no」,

接下來輸出共7行,每行都是乙個集合,

前2行分別輸出集合a、b,接下5行來分別輸出集合a、b的並(a u b)、交(a n b)、差(a – b)、補。

集合中的元素用「{}」擴起來,且元素之間用「, 」隔開。

14 1 2 3 10

case# 1:a = b = {}a u b = a n b = {}a - b = sa = {}sb =

使用stl中的set可以快速解決這個問題~

答案如下~

#include using namespace std;

#include #include #include void print(const set&t)

" << endl;}

int main()

cin>>n;

for(int k = 0;k < n;k++)

cout<<"case# "set_union(a1.begin(),a1.end(),a2.begin(),a2.end(),inserter(a4,a4.begin()));

cout<<"a u b = ";

print(a4);

//交集

seta5;

set_intersection(a1.begin(),a1.end(),a2.begin(),a2.end(),inserter(a5,a5.begin()));

cout<<"a n b = ";

print(a5);

//差集

seta3;

set_difference(a1.begin(),a1.end(),a2.begin(),a2.end(),inserter(a3,a3.begin()));

cout<<"a - b = ";

print(a3);

//a的補集

seta6;

set_difference(a4.begin(),a4.end(),a1.begin(),a1.end(),inserter(a6,a6.begin()));

cout<<"sa = ";

print(a6);

//b的補集

seta7;

set_difference(a4.begin(),a4.end(),a2.begin(),a2.end(),inserter(a7,a7.begin()));

cout<<"sb = ";

print(a7);

}}

集合 集合運算

update pop remove 集合的運算 集合和字典相同都用 但是集合沒有鍵,只有元素值 集合中存貯列表會報錯,因為只能存貯不可變序列,而列表是可變的 直接建立 se print se,type se class set 通過set 建立 se set 1 2,3 4 這裡函式中用列表,因為要...

mysql集合運算教程 SQL之集合運算

union 並集 集合運算 1.union all集合運算 該集合運算返回在輸入的多集 現的所有行,它實際上不會對行進行比較,也不會刪除重複行。假設查詢query1返回m行,查詢query2返回n行,則該集合運算後返回 m n 行 1 select country,region,city fromh...

集合運算 並 交 差運算

已知所給集合 a 和 b,求 a 與 b 的並集 c c a b 已知所給集合 a 和 b,求 a 與 b 的交集 c c a b 已知所給集合 a 和 b,求 a 與 b 的差集 c c a b 離散數學中的簡單的集合運算,由c語言編寫,思路非常簡單,如下 include intinterecti...