有两个整数序列,每个整数序列中的所有元素均不相同,设计一个算法求它们的公共元素。

求解思路:利用set< int >容器存储数组,记住集合里的元素都是默认递增排序的,然后利用迭代器让两个集合从首元素依次比较,如果相等就把该元素存到定义的第三个set容器s3中,如果it1小于it2,it1++(元素都是递增排序的),如果it1大于it2,it2++就可以了。
#include<stdio.h>
#include< set >
using namespace std;
void solve(set< int > s1,set< int > s2,set< int > &s3)
{
set< int >::iterator it1,it2;
it1=s1.begin();
it2=s2.begin();
while(it1!=s1.end()&&it2!=s2.end())
{
if(*it1==*it2)
{
s3.insert(*it1);
++it1;++it2;
}
else if(*it1<*it2)
++it1;
else
++it2;
}
}
void disset(set< int > s)
{
set< int >::iterator it;
for(it=s.begin();it!=s.end();++it)
printf("%d",*it);
print("\n");
}
int main()
{
int a[]={4,5,8,9,3};
int n=sizeof(a)/sizeof(a[0]);
set< int > s1(a,a+n);
int b={2,5,9,3,0};
int n=sizeof(b)/sizeof(b[0]);
set< int > s2(b,b+n);
set< int > s3;
solve(s1,s2,s3);
printf(“求解结果\n”);
printf("s1: ");dispset(s1);
printf("s2: ");dispset(s2);
printf("s3: ");dispset(s3);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值