c语言求两个集合的并集然后按照从小到大输出
每组输入数据分为三行,第一行有两个数字n,m(0<n,m<=10000),分别表示集合A和集合B的元素个数。后两行分别表示集合A和集合B。每个元素为不超出int范围的整数...
每组输入数据分为三行,第一行有两个数字n,m(0<n,m<=10000),分别表示集合A和集合B的元素个数。后两行分别表示集合A和集合B。每个元素为不超出int范围的整数,每个元素之间有一个空格隔开。
输出
针对每组数据输出一行数据,表示合并后的集合,要求从小到大输出,每个元素之间有一个空格隔开。
样例输入
1 2
1
2 3
1 2
1
1 2
我的代码有时候测试正确有时候错误,请问这是为什么
#include<iostream>
using namespace std;
int cmp(const void*a,const void*b)
{
return(*(int*)a-*(int*)b);
}
int main()
{ const int max=100000;
int temp;
int a,b;int A[max],B[max];
while(cin>>a>>b)
{
for(int d=0;d<a;d++)
cin>>A[d];
for(int j=0;j<b;j++)
cin>>B[j];
temp=0;
for(int y=0;y<b;y++)
{
for(int u=0;u<a;u++)
{
if(B[y]==A[u])
temp++;
}
if(temp==0)
A[a++]=B[y];
temp=0;
}
qsort(A,a-1,sizeof(A[0]),cmp);
for(int r=0;r<a;r++)
{
if(r==a-1)
cout<<A[r]<<endl;
else
cout<<A[r]<<" ";
}
}return 0;
} 展开
输出
针对每组数据输出一行数据,表示合并后的集合,要求从小到大输出,每个元素之间有一个空格隔开。
样例输入
1 2
1
2 3
1 2
1
1 2
我的代码有时候测试正确有时候错误,请问这是为什么
#include<iostream>
using namespace std;
int cmp(const void*a,const void*b)
{
return(*(int*)a-*(int*)b);
}
int main()
{ const int max=100000;
int temp;
int a,b;int A[max],B[max];
while(cin>>a>>b)
{
for(int d=0;d<a;d++)
cin>>A[d];
for(int j=0;j<b;j++)
cin>>B[j];
temp=0;
for(int y=0;y<b;y++)
{
for(int u=0;u<a;u++)
{
if(B[y]==A[u])
temp++;
}
if(temp==0)
A[a++]=B[y];
temp=0;
}
qsort(A,a-1,sizeof(A[0]),cmp);
for(int r=0;r<a;r++)
{
if(r==a-1)
cout<<A[r]<<endl;
else
cout<<A[r]<<" ";
}
}return 0;
} 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询