这题简直是为STL中的交集运算而生的
include
using namespace std;
int T,n;
set a,b,c;
set tmp1,tmp2;
int main()
{
cin>>T;
for(int step=0;step>x>>y>>z;
a.clear();b.clear();c.clear();
for(int i=1;i<=x;i++)
{
int xx;cin>>xx;
a.insert(xx);
}
for(int i=1;i<=y;i++)
{
int xx;cin>>xx;
b.insert(xx);
}
for(int i=1;i<=z;i++)
{
int xx;cin>>xx;
c.insert(xx);
}
tmp1.clear();tmp2.clear();
set_intersection(a.begin(),a.end(),b.begin(),b.end(),inserter(tmp1,tmp1.begin()));
set_intersection(tmp1.begin(),tmp1.end(),c.begin(),c.end(),inserter(tmp2,tmp2.begin()));
set<int>::iterator iter=tmp2.begin();
printf("case #%d:\n",step);
int ff=1;
if(tmp2.size()==0) cout<<-1;
while(iter!=tmp2.end())
{
if(ff) ff=0; else cout<<' ';
cout<<(*iter);
++iter;
}
cout<<endl;
}
return 0;
}
说一说,STL中的交集,并集,差集运算的写法!
stl 集合运算
set_intersection(xx.begin(),xx.end(),yy.begin(),yy.end(),inserter(I,I.begin()));
差集
set_union并集
set_intersection交集
以下是迭代的方法:
set::iterator iter=tmp2.begin();
while(iter!=tmp2.end())
{
cout<<(*iter);
++iter;
}
查看set中元素的个数 SET.size()
照葫芦画瓢即可
都用上Python了 这题很明显考虑用集合 直接三个集合求交集就完事了
打个广告,过了的同学可以看看我的代码(溜