hpuoj【1294】有序数组共有元素【水题】

来源:互联网 发布:飞升真元锻体升级数据 编辑:程序博客网 时间:2024/05/15 20:19

1294: 有序数组共有元素 [水题]

时间限制: 1 Sec 内存限制: 128 MB

提交: 414 解决: 94 统计

题目描述

求两个有序数组的共有元素


输入

每次测试只有一组测试数据。

第一行输入两个数,分别代表两个元素的长度

第二行输入m个值,代表第一个数组的每个元素值

第三行输入n个值,代表第二个数组的每个元素值

数组最长不超过20,每个元素值范围在int之内

输出

输出两个数组共有的元素,占一行,每两个元素中间有一个空格

样例输入

5 51 2 3 4 52 3 4 5 6

样例输出

2 3 4 5


解析:

   首先合并两个数组,然后把相同元素储存在一个新数组,然后剔除新数组中的重复元素。


程序如下:

#include<cstdio>#include<algorithm>using namespace std;int main(){int n,m;scanf("%d%d",&n,&m);int a[23],b[23],c[23],d[23],e[23];int k=0;int num=0;int ans=0;for(int i=0; i<n; i++){scanf("%d",&a[i]);c[k++]=a[i];}for(int j=0; j<m; j++){scanf("%d",&b[j]);c[k++]=b[j];}sort(c,c+k);for(int i=0; i<k; i++){if(c[i]==c[i+1])   d[num++]=c[i];}for(int i=0; i<num; i++){if(d[i]!=d[i+1])   e[ans++]=d[i];}for(int i=0; i<ans; i++)    printf("%d%c",e[i],i==ans-1?'\n':' ');return 0;}