给定2个集合A和B,请你计算A和B 这2个集合的并集?
Input
输入数据有1组,第1行为n,代表集合A 的元素个数;第2行为集合A的这n个元素;第3行为m,代表集合B的元素个数;第4行为集合B的m个元素。
Output
输出共1行,为这2个集合的并。(注意:集合中的数字是有序的,升序),题目中所有数字都是大于0并且小于100的!
Sample Input
4
1 2 3 4
4
3 4 5 6
Sample Output
1 2 3 4 5 6
供参考:
#include<stdio.h>
#define N 20
int main()
{
int a[N],b[N],c[2*N],m,n,i,j,k;
scanf("%d",&m);
for(i=0;i<m;i++) //输入第一组整数数据
scanf("%d",&a[i]);
scanf("%d", &n);
for(i=0;i<n;i++) //输入第二组整数数据
scanf("%d",&b[i]);
i = 0; j = 0; k = 0;
while(i < m && j < n)
{
if(a[i] > b[j])
c[k++] = b[j++];
else if(a[i] < b[j])
c[k++] = a[i++];
else{
c[k++] = a[i++];
j++;
}
}
while(j < n) c[k++] = b[j++];
while(i < m) c[k++] = a[i++];
for(i=0;i<k;i++)
printf("%4d",c[i]);
return 0;
}
#include<stdlib.h>
#include<stdio.h>
int main()
{
int a[100],b[100],c[200];
int m, n,cnt=0;
scanf("%d", &m);
for (int i = 0; i < m; i++)
{
scanf("%d", &a[i]);
c[i] = a[i];
}
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d", &b[i]);
c[m + i] = b[i];
}
for(int i=0;i<m+n-1;i++)
for(int j=0;j<m+n-i-1;j++)
if (c[j] > c[j + 1])
{
int temp;
temp = c[j];
c[j] = c[j + 1];
c[j + 1] = temp;
}
for(int i=0;i<m+n-1-cnt;i++)
for (int j = 0; j < m + n - i - 1-cnt; j++)
if (c[i] == c[i + 1])
{
cnt++;
for (int k = i; k < m + n; k++)
c[k] = c[k + 1];
}
for (int i = 0; i < m + n-cnt; i++)
printf("%d\t", c[i]);
return 0;
}