演算法訓練 集合運算

2021-10-06 01:32:50 字數 1413 閱讀 2446

資源限制

時間限制: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

思路:輸入a,b,並對其進行公升序,在依次求交集,並集,餘集,用函式操作更加容易理解。

****如下:**

/*問題:求兩個集合的交集,並集,和b在a中的餘集

*/#include #include int a[2001],b[2001],c[4002],d[2001],e[2001];

using namespace std;

int jiaoji(int n,int m)

} }return k;

}void bingji(int j)else }}

// 1 2 3 4 5 除去2 4 輸出 1 3 5

void yuji(int n,int k)

} elseelse

}if(flag)

} }}int main()

cin >> m;

for(i = 0;i < m;i++)

sort(a,a+n);

sort(b,b+m);

//求交集

//int max = n > m ? n : m;

int k = jiaoji(n,m);

printf("\n");

//求並集按公升序輸出

//兩個集合合併到乙個集合進行操作

j = 0;

for(i = 0;i < n;i++)

for(i = 0;i < m;i++)

bingji(j);

printf("\n"); //換行

yuji(n,k);

return 0;

}

演算法訓練 集合運算

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

演算法訓練 集合運算

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