离散题目4

来源:互联网 发布:网络模块接法图解 编辑:程序博客网 时间:2024/06/03 11:00

离散题目4

Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic

Problem Description

题目给出两个非空整数集,请写出程序求两个集合的交集。

Input

多组输入,每组输入包括两行,第一行为集合A的元素,第二行为集合B的元素。具体参考示例输入。 每个集合元素个数不大于3000,每个元素的绝对值不大于2^32 - 1。

Output

每组输入对应一行输出,为A、B的交集,如果交集为空输出"NULL",否则交集的元素按递增顺序输出,每个元素之间用空格分割。

Example Input

1 2 3 4 51 5 3 6 71 2 4 5 36 7 8 9 10

Example Output

1 3 5NULL

Hint

Author


#include<bits/stdc++.h>using namespace std;int main(){    vector<int> a, b;    vector<int>::iterator it;    string buf, ac, bc;    int t;    while(getline(cin, ac))//输入两行字符串    {        getline(cin, bc);        stringstream ss(ac);//将字符串拆开        while(ss >> buf)        {            sscanf(buf.c_str(), "%d", &t);//将整数存入a中            a.push_back(t);        }        stringstream cc(bc);        while(cc >> buf)        {            sscanf(buf.c_str(), "%d", &t);//将整数存入b中            b.push_back(t);        }        int i, flag = 0;        sort(a.begin(), a.end());        sort(b.begin(), b.end());//从小到大排序        for(i = 0; i < a. size(); i++)        {            it = find(b.begin(), b.end(), a[i]);            if(it != b.end())//a中的元素在b中存在            {                if(flag) printf(" ");                printf("%d", *it);//输出                b.erase(it);//删除b中该元素                flag++;            }        }        if(!flag) printf("NULL");        printf("\n");        a.clear();        b.clear();    }    return 0;}