蓝桥杯-问题 1606: 集合运算(C++set解决)
2018-02-11 19:26
525 查看
/**********
问题 1606: [蓝桥杯][算法训练VIP]集合运算
时间限制: 1Sec 内存限制: 128MB 提交: 5 解决: 2
题目描述
给出两个整数集合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
author:YuBo
Date:2018/2/8
mutiset
***********/
#include<iostream>
#include<set>
using namespace std;
set<int> s1,s2,s3;//A B 并集
set<int>::iterator it1,it2,it3;
int main()
{
int i;int n;int N;
cin>>N;
for(i=0;i<N;i++)
{
cin>>n;
s1.insert(n);
}
cin>>N;
for(i=0;i<N;i++)
{
cin>>n;
s2.insert(n);
}
for(it1=s1.begin();it1!=s1.end();it1++) //交集
{
it2=s2.find(*it1);
if(it2!=s2.end())
cout<<*it1<<" ";
else;
}
cout<<endl;
for(it1=s1.begin();it1!=s1.end();it1++)
{
s3.insert(*it1);
}
for(it2=s2.begin();it2!=s2.end();it2++)
{
s3.insert(*it2);
}
for(it3=s3.begin();it3!=s3.end();it3++) //并集
{
cout<<*it3<<" ";
}
cout<<endl;
for(it2=s2.begin();it2!=s2.end();it2++)
{
s1.erase(*it2);//A中删去B的
}
for(it1=s1.begin();it1!=s1.end();it1++)
{
cout<<*it1<<" ";
}
cout<<endl;
return 0;
}
问题 1606: [蓝桥杯][算法训练VIP]集合运算
时间限制: 1Sec 内存限制: 128MB 提交: 5 解决: 2
题目描述
给出两个整数集合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
author:YuBo
Date:2018/2/8
mutiset
***********/
#include<iostream>
#include<set>
using namespace std;
set<int> s1,s2,s3;//A B 并集
set<int>::iterator it1,it2,it3;
int main()
{
int i;int n;int N;
cin>>N;
for(i=0;i<N;i++)
{
cin>>n;
s1.insert(n);
}
cin>>N;
for(i=0;i<N;i++)
{
cin>>n;
s2.insert(n);
}
for(it1=s1.begin();it1!=s1.end();it1++) //交集
{
it2=s2.find(*it1);
if(it2!=s2.end())
cout<<*it1<<" ";
else;
}
cout<<endl;
for(it1=s1.begin();it1!=s1.end();it1++)
{
s3.insert(*it1);
}
for(it2=s2.begin();it2!=s2.end();it2++)
{
s3.insert(*it2);
}
for(it3=s3.begin();it3!=s3.end();it3++) //并集
{
cout<<*it3<<" ";
}
cout<<endl;
for(it2=s2.begin();it2!=s2.end();it2++)
{
s1.erase(*it2);//A中删去B的
}
for(it1=s1.begin();it1!=s1.end();it1++)
{
cout<<*it1<<" ";
}
cout<<endl;
return 0;
}
相关文章推荐
- 蓝桥杯-问题 1487: 不同单词个数统计(c++ set解决)
- C++STL_set中函数_集合运算
- Set集合解决年龄问题:年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,
- 蓝桥杯 集合运算(set)
- 解决springMVC对象中包含Set集合的问题
- springMVC实体用注解管理,多对多 set集合元素排序问题 解决
- ISO C++forbids declaration of 'SystemSetDialog' with no type的问题解决
- 【C/C++】C语言复习笔记-17种小算法-解决实际问题
- C++中的运算符合赋值问题
- 解决6410 WINCE6 应用层调用SetSystemPowerState api关机无效的问题
- Qt/C++ QSlider解决点击不能到该位置问题
- eclipse生成jar包(各种问题集合解决)
- C++基于递归算法解决汉诺塔问题与树的遍历功能示例
- 初次使用VS2010基于C++开发项目碰到的问题及解决方法
- C++/python解决汉诺塔问题
- C++解决智能指针交叉引用问题
- 非托管C++调用 Webservice,如何解决状态保持的问题
- 用C++解决数学类问题的练习
- Homebrew 解决CUDA 与 OpenCV的 C++不一样的问题
- C++基于人工智能搜索策略解决农夫过河问题示例