试题 算法训练 集合运算

简介: 试题 算法训练 集合运算

试题 算法训练 集合运算

资源限制

内存限制:512.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s

问题描述

  给出两个整数集合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

提交代码:

#include<bits/stdc++.h>
using namespace std;
int n, m, a;
map<int, int> mp;
int main(){
  cin >> n;
  for(int i = 0; i < n; i++) {
    cin >> a; mp[a] = 1;  // 等于1代表只有集合a有这个数
  }
  cin >> m;
  for(int i = 0; i < m; i++) {
    cin >> a;
    if(mp[a]) mp[a] = 3;  // 等于3代表集合a和集合b都有这个数
    else mp[a] = 2;       // 等于2代表只有集合b有这个数
  }
  for(map<int, int>::iterator it = mp.begin(); it != mp.end(); it++){
    if(it->second == 3) cout << it->first << " ";
  } 
  cout << endl;
  for(map<int, int>::iterator it = mp.begin(); it != mp.end(); it++){
    cout << it->first << " ";
  } 
  cout << endl;
  for(map<int, int>::iterator it = mp.begin(); it != mp.end(); it++){
    if(it->second == 1) cout << it->first << " ";
  } 
}
相关文章
|
2月前
|
存储 算法 测试技术
ArrayList集合的两个实例应用,有趣的洗牌算法与杨辉三角
ArrayList集合的两个实例应用,有趣的洗牌算法与杨辉三角
23 1
|
2月前
|
监控 算法 安全
带用集合算法set union讲解
带用集合算法set union讲解
20 0
|
4月前
|
存储 算法 Python
Python 集合探索:解密高效数据操作和快速算法的奇妙世界
Python 集合探索:解密高效数据操作和快速算法的奇妙世界
|
5月前
|
算法 Python
【Python深入学习】- 书籍推荐|数据结构和算法介绍|内建集合数据类型
【Python深入学习】- 书籍推荐|数据结构和算法介绍|内建集合数据类型
58 1
|
6月前
|
算法 C++
92 C++ - 常用集合算法
92 C++ - 常用集合算法
28 0
|
2月前
|
缓存 算法 安全
Java集合框架:深入探究数据结构与算法的精华
Java集合框架:深入探究数据结构与算法的精华
|
2月前
|
存储 算法 Java
【数据结构与算法】2、链表(简单模拟 Java 中的 LinkedList 集合,反转链表面试题)
【数据结构与算法】2、链表(简单模拟 Java 中的 LinkedList 集合,反转链表面试题)
43 0
|
9月前
|
算法 容器
C++STL算法篇之集合算法
C++STL算法篇之集合算法
|
11月前
|
算法
回溯算法编程题集合(leetcode)
回溯算法编程题集合(leetcode)
|
11月前
|
算法 测试技术 索引
贪心算法编程题集合(leetcode)
贪心算法编程题集合(leetcode)