演算法訓練 集合運算

2021-08-26 09:33:36 字數 1346 閱讀 4250

問題描述

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

本來是想用set做的  可是map更熟一點  注釋掉的是剛開始的思路

#include#include#include using namespace std;

int main()

cin >> m;

int b[m];

for(int i=0; i> t;

b[i] = t;

p[t]++;

// max = (t>max)? t : max;

}sort(b, b+m);

/* for(map::iterator iter=p.begin();iter!=p.end();iter++)

}if(flag)

cout << endl;

flag = 0;

for(map::iterator iter=p.begin();iter!=p.end();iter++)

}if(flag)

cout << endl;

flag = 0;

int i=0;

for(map::iterator iter=p.begin();iter!=p.end();iter++)

else

cout << iter->first << " ";

}cout << endl;

/*for(int i=1; i1) p[i] = 0;

}cout << endl;

for(int i=1; icout << endl;

*/ return 0;

}

演算法訓練 集合運算

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

演算法訓練 集合運算

演算法訓練 集合運算 時間限制 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中的元素。集合中的所有元素均為int範...