首页 > 其他分享 >Problem F: STL——集合运算

Problem F: STL——集合运算

时间:2023-05-25 17:38:44浏览次数:45  
标签:begin set 运算 STL iter ++ 集合 Problem cout


Home

Web Board

ProblemSet

Standing

Status

Statistics

Problem F: STL——集合运算

Time Limit: 1 Sec  Memory Limit: 128 MB


Submit: 3767  Solved: 1927


[Submit][Status][Web Board]


Description



集合的运算就是用给定的集合去指定新的集合。设A和B是集合,则它们的并差交补集分别定义如下:



A∪B={x|x∈A∨x∈B}



A∩B={x|x∈A∧x∈B}



A-B={x|x∈A∧x不属于 B}



SA ={x|x∈(A∪B)∧x 不属于A}



SB ={x|x∈(A∪B)∧x 不属于B}



Input



第一行输入一个正整数T,表示总共有T组测试数据。(T<=200)



然后下面有2T行,每一行都有n+1个数字,其中第一个数字是n(0<=n<=100),表示该行后面还有n个数字输入。



Output



对于每组测试数据,首先输出测试数据序号,”Case #.NO”,



接下来输出共7行,每行都是一个集合,



前2行分别输出集合A、B,接下5行来分别输出集合A、B的并(A u B)、交(A n B)、差(A – B)、补。



集合中的元素用“{}”扩起来,且元素之间用“, ”隔开。



Sample Input



14 1 2 3 10



Sample Output



Case# 1:A = {1, 2, 3}B = {}A u B = {1, 2, 3}A n B = {}A - B = {1, 2, 3}SA = {}SB = {1, 2, 3}



HINT



如果你会用百度搜一下关键字“stl set”,这个题目我相信你会很快很轻松的做出来。加油哦!






Append Code


[ Submit][Status][Web Board]


한국어<   中文  فارسی  English  ไทย
All Copyright Reserved 2010-2011 SDUSTOJ TEAM
GPL2.0 2003-2011 HUSTOJ Project TEAM
Anything about the Problems, Please Contact Admin:admin


#include <iostream>
#include <algorithm>
#include <set>
using namespace std;
int main()
{
    int T, j, n, a[110];
    cin >> T;
    for(int i = 1; i <= T; i++)
    {
        set <int> A; set <int> B; set <int> C;
        A.clear(); B.clear(); C.clear(); set <int>:: iterator set_iter;
        cin >> n;
        for( j = 0; j < n; ++j)
           cin >> a[j];
        A.insert(a, a+n);
        cin >> n;
        for(int j = 0; j < n; j++)
           cin >> a[j];
        B.insert(a, a + n);
        cout << "Case# " << i << ":" << endl;
        cout << "A = {";
        for(set_iter = A.begin(); set_iter != A.end() ; ++set_iter) {
                if(set_iter != A.begin())
                  cout << ", ";
            cout << *set_iter;
        }
        cout << "}" <<endl;
        cout << "B = {";
        for(set_iter = B.begin(); set_iter != B.end() ; ++set_iter) {
                if(set_iter != B.begin())
                  cout << ", ";
            cout << *set_iter;
        }
        cout << "}" <<endl;
        cout << "A u B = {";
        set_union(A.begin(), A.end(), B.begin(), B.end(), insert_iterator< set<int > >(C,C.begin()));
        for(set_iter = C.begin(); set_iter != C.end() ; ++set_iter) {
                if(set_iter != C.begin())
                  cout << ", ";
            cout << *set_iter;
        }
        cout << "}" <<endl;
        C.clear();
        set_intersection( A.begin(), A.end(), B.begin(), B.end(), insert_iterator< set<int> >(C, C.begin()));
        cout << "A n B = {";
         for(set_iter = C.begin(); set_iter != C.end() ; ++set_iter) {
                if(set_iter != C.begin())
                  cout << ", ";
            cout << *set_iter;
        }
         cout << "}" <<endl;
         C.clear();
         cout << "A - B = {";
         set_difference(A.begin(), A.end(), B.begin(), B.end(), insert_iterator< set<int> >(C, C.begin()));
         for(set_iter = C.begin(); set_iter != C.end(); set_iter++ )
         {
             if(set_iter != C.begin())
                cout << ", ";
             cout << *set_iter;
         }
         cout << "}" << endl;
          C.clear(); set<int> C2;
         cout << "SA = {";
         set_union(A.begin(),A.end(),B.begin(),B.end(),insert_iterator<set<int> >(C2,C2.begin()));
         set_difference(C2.begin(), C2.end(), A.begin(), A.end(), insert_iterator< set<int> >(C, C.begin()));
         for(set_iter = C.begin(); set_iter != C.end(); set_iter++ )
         {
             if(set_iter != C.begin())
                cout << ", ";
             cout << *set_iter;
         }
         cout << "}" << endl;
          C.clear();
         cout << "SB = {";
         set_difference(C2.begin(), C2.end(), B.begin(), B.end(), insert_iterator< set<int> >(C, C.begin()));
         for(set_iter = C.begin(); set_iter != C.end(); set_iter++ )
         {
             if(set_iter != C.begin())
                cout << ", ";
             cout << *set_iter;
         }
         cout << "}" << endl;
         A.clear(); B.clear(); C.clear(); C2.clear();
    }
}



标签:begin,set,运算,STL,iter,++,集合,Problem,cout
From: https://blog.51cto.com/u_16129621/6350291

相关文章

  • Problem B: 时间和日期类(II)
    HomeWebBoardProblemSetStandingStatusStatisticsProblemB:时间和日期类(II)TimeLimit:4Sec  MemoryLimit:128MBSubmit:2673  Solved:1980[Submit][Status][WebBoard]Description设计一个日期时间类,用于读取输入的数据,按格式输出日期和时间......
  • Problem A: 时间和日期类(I)
    HomeWebBoardProblemSetStandingStatusStatisticsProblemA:时间和日期类(I)TimeLimit:4Sec  MemoryLimit:128MBSubmit:4223  Solved:2418[Submit][Status][WebBoard]Description设计一个时间类和一个日期类,用于读取输入的数据,按......
  • Problem E: STL——灵活的线性表
    HomeWebBoardProblemSetStandingStatusStatisticsProblemE:STL——灵活的线性表TimeLimit:1Sec  MemoryLimit:128MBSubmit:5192  Solved:2169[Submit][Status][WebBoard]Description数组和链表是我们熟知的两种线性结构,但是它们不够......
  • Problem C: 重载字符的加减法
    HomeWebBoardProblemSetStandingStatusStatisticsProblemC:重载字符的加减法TimeLimit:1Sec  MemoryLimit:128MBSubmit:1895  Solved:1155[Submit][Status][WebBoard]Description定义一个字符类Character,只有一个char类型的数据成员。重载......
  • Problem G: STL——Jerry的问题
    HomeWebBoardProblemSetStandingStatusStatisticsProblemG:STL——Jerry的问题TimeLimit:1Sec  MemoryLimit:128MBSubmit:3033  Solved:1888[Submit][Status][WebBoard]Description最近Jerry正在刻苦的学习STL中的set的功能函数,他发......
  • Problem I: STL——括号匹配
    HomeWebBoardProblemSetStandingStatusStatisticsProblemI:STL——括号匹配TimeLimit:1Sec  MemoryLimit:128MBSubmit:3032  Solved:1855[Submit][Status][WebBoard]Description给出一堆括号,看其是否匹配,例如()、()()、(())这样的......
  • Problem C: 数量的类模板
    HomeWebBoardProblemSetStandingStatusStatisticsProblemC:数量的类模板TimeLimit:1Sec  MemoryLimit:128MBSubmit:1173  Solved:812[Submit][Status][WebBoard]Description定义一个类模板Data,用于包装C++中的基本数据类型int和double。它......
  • Problem E: 新奇的加法运算
    HomeWebBoardProblemSetStandingStatusStatisticsProblemE:新奇的加法运算TimeLimit:1Sec  MemoryLimit:128MBSubmit:1117  Solved:685[Submit][Status][WebBoard]Description定义类newInt,包括:1.int类型的数据成员。2.重载运算符“+”。......
  • Problem A: 类的初体验
    HomeWebBoardProblemSetStandingStatusStatisticsProblemA:类的初体验TimeLimit:1Sec  MemoryLimit:128MBSubmit:723  Solved:661[Submit][Status][WebBoard]Description定义一个类Data,只有一个double类型的属性和如下3个方法:1.  voi......
  • Problem D: 平面上的点——Point类 (IV)
    ProblemD:平面上的点——Point类(IV)TimeLimit:1Sec  MemoryLimit:4MBSubmit:5400  Solved:3167[Submit][Status][WebBoard]Description在数学上,平面直角坐标系上的点用X轴和Y轴上的两个坐标值唯一确定。现在我们封装一个“Point类”来实现平面上......