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

2021-10-03 04:45:26 字數 1605 閱讀 9924

題目描述:

資源限制

時間限制:1.0s 記憶體限制:512.0mb

問題描述

給出兩個整數集合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

思路:

求兩個集合的並集,交集,以及集合b在集合a中的補集。思路很簡單,直接看**吧!哪不會可以提出來!

注意:(1)並集陣列至少開到2000。(因為集合a和集合b最大1000).

(2)交集和補集的陣列個數可能為0個,結果不能輸出多餘的換行。

ac**:

#include

#include

#include

#include

#include

#include

using

namespace std;

int a[

1000

],b[

1000];

int bing[

2000

],jiao[

1000

],bu[

1000];

intmain()

}if(!flag)

//陣列b中的該元素與陣列a中的該元素相同,不必加到並集中

bing[k++

]=b[i]

;else

jiao[k1++

]=b[i];}

//求b在a中的補集

int k2=0;

for(i=

0;iif(

!flag)

//新增到補集中去

bu[k2++

]=a[i];}

sort

(bing,bing+k)

;sort

(jiao,jiao+k1)

;sort

(bu,bu+k2);if

(k1)

//交集中有元素才輸出

for(i=

0;i) cout<<<

" ";

cout

//補集中有元素才輸出

return0;

}

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

演算法訓練 集合運算 時間限制 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中的元素個數。第四行...

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

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