蓝桥杯集合运算问题c语言,蓝桥杯 集合运算(set)

算法训练 集合运算

时间限制: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中的余集中的所有元素。

样例输入

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

tips:STL的运用,水题

#include

#include

#include

using namespace std;

sets1,s2,s3,s4,s5;

int n,m,x;

void output(set s)

{

for(set::iterator it=s.begin();it!=s.end();++it)

{

cout<

}

cout<

}

int main()

{

cin>>n;for(int i=1;i<=n;i++)cin>>x,s1.insert(x),s3.insert(x),s5.insert(x);

cin>>m;for(int i=1;i<=m;i++)

{

cin>>x,s2.insert(x),s3.insert(x);

if(s1.count(x))s4.insert(x),s5.erase(x);

}

output(s4);output(s3);output(s5);

return 0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
集合是离散学中的重要概念,它是由一些互异的元素组成的整体。在实际应用中,集合的交、并、差等操作是常见的需求。下面是针对集合运算在 C 语言中的实验总结。 1. 集合的表示:集合可以用组、链表等据结构来表示,其中组是常用的一种方法。可以定义一个布尔类型的组,组中的每个元素表示对应下标的元素是否在集合中出现。 2. 集合的初始化:在定义集合组后,需要对集合组进行初始化。可以定义一个函,将集合组中的所有元素都设置为 false 表示不出现在集合中;也可以定义一个函,根据用户给定的元素列表,将集合组中对应元素设置为 true 表示出现在集合中。 3. 集合的交:集合的交可以通过遍历集合组,对应位置上的元素都为 true 时,将结果集合组中的对应位置也设置为 true。代码示例: ``` void set_intersection(bool set1[], bool set2[], bool result[]) { for (int i = 0; i < SET_SIZE; i++) { if (set1[i] && set2[i]) { result[i] = true; } else { result[i] = false; } } } ``` 4. 集合的并:集合的并可以通过遍历集合组,对应位置上的元素有一个为 true 时,将结果集合组中的对应位置也设置为 true。代码示例: ``` void set_union(bool set1[], bool set2[], bool result[]) { for (int i = 0; i < SET_SIZE; i++) { if (set1[i] || set2[i]) { result[i] = true; } else { result[i] = false; } } } ``` 5. 集合的差:集合的差可以通过遍历集合组,对应位置上的元素在 set1 中为 true,而在 set2 中为 false 时,将结果集合组中的对应位置也设置为 true。代码示例: ``` void set_difference(bool set1[], bool set2[], bool result[]) { for (int i = 0; i < SET_SIZE; i++) { if (set1[i] && !set2[i]) { result[i] = true; } else { result[i] = false; } } } ``` 6. 集合的输出:可以定义一个函,遍历集合组,将组中元素为 true 的下标输出。代码示例: ``` void set_print(bool set[]) { printf("{ "); for (int i = 0; i < SET_SIZE; i++) { if (set[i]) { printf("%d ", i); } } printf("}\n"); } ``` 以上是集合的交、并、差等运算在 C 语言中实现的简单示例。希望能对你的学习有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值