試題 演算法訓練 集合運算

2022-08-28 10:18:10 字數 3275 閱讀 3230

問題描述

給出兩個整數集合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中的元素。集合中的...