TOJ1743 集合运算 Set

古城微笑少年丶 2022-05-30 05:21 211阅读 0赞

描述

给定两个集合A和B的所有元素,计算它们的交、并、差集。

输入

输入数据有多组,第一行为数据的组数T,接下来有2T行,每组数据占2行,每行有若干个整数,第一行的所有整数构成集合A,第二行的所有整数构成集合B,分别用空格分隔。A和B最多分别不超过100个元素。

输出

输出A、B的交、并、差集中的所有元素(以递增顺序)。每个集合占一行,数据元素之间用空格分隔。

20180305222728380

(输入输出显示不出来… 用图片凑合一下吧…

这道题充分让我感受到了C++的可爱以及Set的强大…

用输入流输入很舒服,Set存好之后用Set本身的函数就可以得到交、并、差集。

然后多组数据记得清空Set。

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<string>
  4. #include<math.h>
  5. #include<sstream>
  6. #include<set>
  7. #include<iostream>
  8. #include<algorithm>
  9. using namespace std;
  10. int main()
  11. {
  12. int t,i,j,a,b,k;
  13. set<int> s1,s2,s3,s4,s5;
  14. string str1,str2;
  15. cin>>t;
  16. getchar();
  17. while(t--)
  18. {
  19. s1.clear();
  20. s2.clear();
  21. s3.clear();
  22. s4.clear();
  23. s5.clear();
  24. //输入
  25. getline(cin,str1);
  26. stringstream ss(str1);
  27. while(ss>>a)
  28. {
  29. s1.insert(a);
  30. }
  31. getline(cin,str2);
  32. stringstream ss2(str2);
  33. while (ss2>>b)
  34. {
  35. s2.insert(b);
  36. }
  37. //计算
  38. set_intersection(s1.begin(),s1.end(),s2.begin(),s2.end(),inserter(s3,s3.begin()));
  39. set_union(s1.begin(),s1.end(),s2.begin(),s2.end(),inserter(s4,s4.begin()));
  40. set_difference(s1.begin(),s1.end(),s2.begin(),s2.end(),inserter(s5,s5.begin()));
  41. //输出
  42. set<int>::const_iterator it;
  43. k=0;
  44. for(it=s3.begin();it!=s3.end();it++)
  45. {
  46. if(k==1)
  47. cout<<" ";
  48. cout<<*it;
  49. k=1;
  50. }
  51. cout<<endl;
  52. k=0;
  53. for(it=s4.begin();it!=s4.end();it++)
  54. {
  55. if(k==1)
  56. cout<<" ";
  57. cout<<*it;
  58. k=1;
  59. }
  60. cout<<endl;
  61. k=0;
  62. for(it=s5.begin();it!=s5.end();it++)
  63. {
  64. if(k==1)
  65. cout<<" ";
  66. cout<<*it;
  67. k=1;
  68. }
  69. cout<<endl;
  70. }
  71. }

发表评论

表情:
评论列表 (有 0 条评论,211人围观)

还没有评论,来说两句吧...

相关阅读

    相关 集合set

    35个问题测试你对Python集合的认识 如何通过掌握集合的基本原理来压制算法问题 图片来自Pexels的Andrea Piacquadio 在我追求掌握面试算法的过程中,我

    相关 set集合

    目录 1,set集合的特点: 1.1,set集合添加的数据不可重复 1.2 hashset无序 Treeset有序 1.2.1set集合的遍历方法 1.2.2Tree

    相关 TOJ1743 集合运算 Set

    描述 给定两个集合A和B的所有元素,计算它们的交、并、差集。 输入 输入数据有多组,第一行为数据的组数T,接下来有2T行,每组数据占2行,每行有若干个整数,第一行的所有整

    相关 Set集合

    简介 > 无序,不可重复的集合 HashSet ①、HashSet:不能保证元素的顺序;不可重复;不是线程安全的;集合元素可以为 NULL; ②、对于 Has

    相关 set集合运算

    set集合 概念:set是可变的、无序的、不重复的元素集合。set的元素及元素里面的元素不能出现不可哈希类型。(即set的元素要求必须可以hash)

    相关 集合 set

    集合 set :去重复,做操作 .add 是增加一个整体,如add('op')是加'op'.update 是增加一个一个的字符是加 o和p in ,no

    相关 set集合

    概述 Set接口继承Collection Set接口常用实现类 1. HashSet 实现了 Set 接口 “它不保证 set 的迭代顺序;特别是它不保证