Problem : STL——Jerry的问题

来源:互联网 发布:linux查看hba卡型号 编辑:程序博客网 时间:2024/06/05 18:11

话不多说,先上题目为敬~

Problem G: STL——Jerry的问题

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 3033  Solved: 1888
[Submit][Status][Web Board]

Description

最近Jerry正在刻苦的学习STL中的set的功能函数,他发现set可以用现有的函数实现并、交、差、对称差等功能,但是他没有找到怎么来比较两个集合是否相等的功能函数,所以他想自己用其他的功能函数来实现能判断两个集合是否相等的功能函数。聪明的Jerry不一会就想到了解决办法,现在他想拿这道题来考考你,看你有没有他聪明。

Input

输入有多组,每组数据有两行,每一行都代表一个集合,每一行有若干个正整数(0<d<=2147483647),并且每行的最后一个数字都是0,代表该行数据的结束,且末尾的0不计入集合中。最后以EOF结束输入。

Output

对于每组数据输出都要输入一个结果,如果两个集合相等便输出“YES”,否则输出“NO”,每个结果占一行

Sample Input

1 2 3 4 01 2 3 4 01 2 2 2 2 2 01 2 01 2 3 4 01 3 3 4 0

Sample Output

YESYESNO

HINT

对称差运算:得到的结果是第一个集合与第二个集合的差集并上第二个与第一个的差集


Append Code

答案如下~
#include<iostream>#include<algorithm>#include<set> using namespace std;int main(){    int t,j;    while(cin>>t)    {        set<int> A;        set<int> B;        set<int> tmp1,tmp2,tmp3;        if(t!=0)          {              A.insert(t);              while(cin>>t&&t!=0)                A.insert(t);          }        while(cin>>t&&t!=0)          B.insert(t);        set_difference(A.begin(), A.end(), B.begin(), B.end(), inserter(tmp1, tmp1.begin()));        set_difference(B.begin(), B.end(), A.begin(), A.end(), inserter(tmp2, tmp2.begin()));        set_union(tmp1.begin(), tmp1.end(), tmp2.begin(), tmp2.end(), inserter(tmp3, tmp3.begin()));        if(tmp3.empty())            cout<<"YES"<<endl;        else            cout<<"NO"<<endl;    }    return 0;}



0 0
原创粉丝点击