藍橋杯 演算法訓練 集合運算

2021-09-29 20:29:09 字數 2802 閱讀 8176

給出兩個整數集合a、b,求出他們的交集、並集以及b在a中的餘集。

輸入格式

第一行為乙個整數n,表示集合a中的元素個數。

第二行有n個互不相同的用空格隔開的整數,表示集合a中的元素。

第三行為乙個整數m,表示集合b中的元素個數。

第四行有m個互不相同的用空格隔開的整數,表示集合b中的元素。

集合中的所有元素均為int範圍內的整數,n、m<=1000。

輸出格式

第一行按從小到大的順序輸出a、b交集中的所有元素。

第二行按從小到大的順序輸出a、b並集中的所有元素。

第三行按從小到大的順序輸出b在a中的餘集中的所有元素。

樣例輸入

51 2 3 4 5

52 4 6 8 10

樣例輸出

2 41 2 3 4 5 6 8 10

1 3 5

樣例輸入

41 2 3 4

35 6 7

樣例輸出

1 2 3 4 5 6 7

1 2 3 4

方法一:利用stl中set有序性與查詢函式實現

#include

#include

#include

#include

using

namespace std;

int a[

1000]=

;int b[

1000]=

;set<

int> a;

set<

int> b;

vector<

int> inter;

set<

int> unio;

vector<

int> resi;

intmain()

cin >> n;

for(

int i =

0; i < n; i++

)//交集

set<

int>

::iterator it;

for(it = a.

begin()

; it!=a.

end(

); it++

)//並集

for(it = a.

begin()

; it!=a.

end(

); it++

)for

(it = b.

begin()

; it!=b.

end(

); it++

)//餘集

for(it = a.

begin()

; it!=a.

end(

); it++

)//列印

for(

int i =

0; i < inter.

size()

; i++

) cout << endl;

for(it = unio.

begin()

; it != unio.

end(

); it++)

cout << endl;

for(

int i =

0; i < resi.

size()

; i++

) cout << endl;

return0;

}

方法二:利用自帶函式求解

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

vector<

int> a;

vector<

int> b;

vector<

int> c;

void

print

(vector<

int>

&c) c.

clear()

; cout<}int

main()

sort

(a.begin()

,a.end()

);cin >> n;

for(

int i =

0; i < n; 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);

}

藍橋杯 演算法訓練 集合運算

演算法訓練 集合運算 時間限制 1.0s 記憶體限制 512.0mb 問題描述 給出兩個整數集合a b,求出他們的交集 並集以及b在a中的餘集。輸入格式 第一行為乙個整數n,表示集合a中的元素個數。第二行有n個互不相同的用空格隔開的整數,表示集合a中的元素。第三行為乙個整數m,表示集合b中的元素個數...

藍橋杯 演算法訓練 集合運算

問題描述 給出兩個整數集合a b a ba b,求出他們的交集 並集以及b bb在a aa中的餘集。輸入格式 第一行為乙個整數n nn,表示集合a aa中的元素個數。第二行有n nn個互不相同的用空格隔開的整數,表示集合a aa中的元素。第三行為乙個整數m mm,表示集合b bb中的元素個數。第四行...

試題 演算法訓練 集合運算 藍橋杯

題目描述 資源限制 時間限制 1.0s 記憶體限制 512.0mb 問題描述 給出兩個整數集合a b,求出他們的交集 並集以及b在a中的餘集。輸入格式 第一行為乙個整數n,表示集合a中的元素個數。第二行有n個互不相同的用空格隔開的整數,表示集合a中的元素。第三行為乙個整數m,表示集合b中的元素個數。...