题目描述
给你两个集合,要求 {A} + {B}。
注:同一个集合中不会有两个相同的元素。
输入 | 样例输入 |
---|---|
多组(不超过 5 组)数据。 每组输入数据分为三行,第一行有两个数字 n,m( 0<n,m≤10000 0 < n , m ≤ 10000 ),分别表示集合 A 和集合 B 的元素个数。后两行分别表示集合 A 和集合 B。每个元素为不超出 int 范围的整数,每个元素之间有一个空格隔开。 | 1 2 1 2 3 1 2 1 1 2 |
输出 | 样例输出 |
针对每组数据输出一行数据,表示合并后的集合,要求从小到大输出,每个元素之间有一个空格隔开。 | 1 2 3 1 2 |
时间限制 | 内存限制 |
C/C++语言:1000MS其它语言:3000MS | C/C++语言:65536KB 其它语言:589824KB |
代码
使用C语言完成
#include <stdio.h>
void sort(int *a, int l)//a为数组地址,l为数组长度。
{
int i, j;
int v;
//排序主体
for(i = 0; i < l - 1; i ++)
for(j = i+1; j < l; j ++)
{
if(a[i] > a[j])//如前面的比后面的大,则交换。
{
v = a[i];
a[i] = a[j];
a[j] = v;
}
}
}
int main() {
int n,m,a[10000],i;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(i=0; i<n+m; i++)
scanf("%d",&a[i]);
sort(a,n+m);
printf("%d",a[0]);
for(i=1; i<n+m; i++)
if(a[i]==a[i-1]) //题中强调一组数据中不会有相同的数,所以最多只有两个数一样
continue;
else
printf(" %d",a[i]);
printf("\n");
}
return 0;
}