https://oj.ismdeep.com/contest/Problem?id=1072&pid=4
题目描述
Alice 和Bob都喜欢收集邮票,他们2个收藏了一些邮票,每种邮票都有一个数字编号。
现在Alice AND Bob想知道他们都有收集的邮票种类
输入
第一行包含一个测试样例数T
每组数据:
第一行有2个整数n,m分别表示Alice和Bob拥有的邮票的个数(n , m <= 1000)
第二行有n个整数,表示Alice拥有邮票的种类(可能会有重复,数值不超过10000)
第三行有m个整数,表示Bob拥有邮票的种类(可能会有重复,数值不超过10000)
输出
输出他们都有收集的邮票种类的数字编号(以从小到大的顺序)
样例输入
2 3 4 1 2 3 2 3 4 5 4 5 1 2 2 3 2 2 3 3 3
样例输出
2 3 2 3
思路:利用结构体,对出现的种类进行标记,然后对被两人都标记的进行输出!
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int N=10005;
struct node
{
int x;
int y;
}a[N];
int main()
{
int T;
scanf("%d",&T);
int n,m,b;
while(T--)
{
memset(a,0,sizeof(a));
scanf("%d%d",&n,&m);
int len_max=0;
for(int i=0;i<n;i++)
{
scanf("%d",&b);
a[b].x=1;
if(len_max<b)
len_max=b;
}
for(int i=0;i<m;i++)
{
scanf("%d",&b);
a[b].y=1;
if(len_max<b)
len_max=b;
}
for(int i=0;i<=len_max;i++)
{
if(a[i].x==1&&a[i].y==1)
printf("%d ",i);
}
printf("\n");
}
return 0;
}