计算并集

来源:互联网 发布:php常用开发工具 编辑:程序博客网 时间:2024/04/29 19:29

题目描述

给你两个集合,要求{A} + {B}。
注:同一个集合中不会有两个相同的元素。

输入格式

每组输入数据分为三行,第一行有两个数字n,m(0<n,m<=10000),分别表示集合A和集合B的元素个数。后两行分别表示集合A和集合B。每个元素为不超出int范围的整数,每个元素之间有一个空格隔开。

输出

针对每组数据输出一行数据,表示合并后的集合,要求从小到大输出,每个元素之间有一个空格隔开。

样例输入

1 2
1
2 3
1 2
1
1 2

样例输出

1 2 3

1 2

#include <iostream>using namespace std;void Sort(int a[], int n);          //  冒泡排序并输出int Merge(int buf1[], int buf[], int n, int m);//求并集int main(){    int n,m,x,buf1[10],buf[20];    while(1)    {        cin>>n>>m;        for(int i = 0; i < n; ++i)        {            cin>>buf1[i];        }        for(int j = 0; j < m; ++j)        {            cin>>buf[j];        }        x = Merge(buf1,buf,n,m);        Sort(buf,x);        cout<<endl;    }    return 0;}void Sort(int buf[], int n){        int temp;        for(int i = 0; i<n - 1; ++i)        {            for(int j = 0; j<n - 1 - i; ++j)            {                if(buf[j]>buf[j+1])                {                    temp = buf[j];                    buf[j] = buf[j+1];                    buf[j+1] = temp;                }            }        }        for(int i = 0; i<n; ++i)        {            cout<<buf[i]<<" ";        }}int Merge(int buf1[], int buf[], int n, int m){        int count,flag;        count = n;        for(int i = 0; i< n; ++i)        {            flag = 1;            for(int j = 0; j < m; ++j)            {                if(buf1[i] == buf[j])                    flag = 0;            }            if(flag)            {                buf[count] = buf1[i];                ++count;            }        }        return count;}


0 0