您的位置:首页 > 其它

离散题目4

2017-05-25 17:44 232 查看


Problem Description

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


Input

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


Output

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


Example Input

1 2 3 4 5
1 5 3 6 7
1 2 4 5 3
6 7 8 9 10



Example Output

1 3 5
NULL



code:

#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.push_back(t);
}
stringstream cc(bc);
while(cc>>buf)
{
sscanf(buf.c_str(), "%d", &t);
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())
{
if(flag) printf(" ");
printf("%d", *it);
b.erase(it);
flag++;
}
}
if(!flag) printf("NULL");
printf("\n");
a.clear();
b.clear();
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: