两个整数集合A,B,求出他们的交集,并集以及B在A中的余集.交集,并集和余集的计算都要求写成一个单独的函数.
2个回答
展开全部
#include <bits/stdc++.h>
#define MX 1000
using namespace std;
int main()
{
int n,m,a[2 * MX + 10],b[MX + 10],c[MX + 10],i,j,p = 0,d[MX + 10],f = 0;
cin >> n;
for ( i = 1; i <=n; i++)
{
cin >> a[i];
}
cin >> m;
for (i = 1;i <= m;i++)
{
cin >> b[i];
}
sort(b + 1,b + m + 1);
sort(a + 1,a + n + 1);
for (i = 1;i <= n;i++)
{
c[i] = a[i];
}
for (i = 1;i <= m;i++)
{
d[i] = b[i];
}
for (i = 1;i <= n;i++)
{
for (j = 1;j <= m;j++)//求交集
{
if (a[i] == b[j])
{
cout << a[i] << " ";
f = 1;
}
}
}
if (f == 1)
{
cout << endl;
}
for (i = 1;i <= m;i++)
{
a[n + i] = b[i];
}
sort(a + 1,a + n + m + 1);
for (i = 1;i <= n + m;i++)//求并集
{
cout << a[i] << " ";
while(a[i] == a[i + 1])
{
i++;
}
}
cout << endl;
int cnt;
for (i = 1;i <= n;i++)//求余集
{
cnt = 0;
for (j = 1;j <= m;j++)
{
if (c[i] != d[j])
{
cnt++;
}
}
if (cnt == m)
{
cout << c[i] << " ";
}
}
return 0;
}
函数的话就是将他们分成三个部分,在外面套上就行了
#define MX 1000
using namespace std;
int main()
{
int n,m,a[2 * MX + 10],b[MX + 10],c[MX + 10],i,j,p = 0,d[MX + 10],f = 0;
cin >> n;
for ( i = 1; i <=n; i++)
{
cin >> a[i];
}
cin >> m;
for (i = 1;i <= m;i++)
{
cin >> b[i];
}
sort(b + 1,b + m + 1);
sort(a + 1,a + n + 1);
for (i = 1;i <= n;i++)
{
c[i] = a[i];
}
for (i = 1;i <= m;i++)
{
d[i] = b[i];
}
for (i = 1;i <= n;i++)
{
for (j = 1;j <= m;j++)//求交集
{
if (a[i] == b[j])
{
cout << a[i] << " ";
f = 1;
}
}
}
if (f == 1)
{
cout << endl;
}
for (i = 1;i <= m;i++)
{
a[n + i] = b[i];
}
sort(a + 1,a + n + m + 1);
for (i = 1;i <= n + m;i++)//求并集
{
cout << a[i] << " ";
while(a[i] == a[i + 1])
{
i++;
}
}
cout << endl;
int cnt;
for (i = 1;i <= n;i++)//求余集
{
cnt = 0;
for (j = 1;j <= m;j++)
{
if (c[i] != d[j])
{
cnt++;
}
}
if (cnt == m)
{
cout << c[i] << " ";
}
}
return 0;
}
函数的话就是将他们分成三个部分,在外面套上就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询