4110. 集合交集

Naive函数数组普通指针

时间限制:2000 ms

内存限制:512 MiB

题面

定义函数 int Intersection(int s1[], int n1, int s2[], int n2, int r[]); 求两个整数集合(存放在数组 s1s_1s2s_2 中,元素个数分别为 n1n_1n2n_2 ,无重复元素)的交集,结果按照由小到大的顺序存放在数组 rr 中。返回交集中元素个数。

//********** Specification of Intersction **********
int Intersection(int s1[],int n1,int s2[],int n2,int r[]){
/* 
   PreCondition: 集合元素存放在s1,s2中;n1, n2分别为两个集合大小
   PostCondition: s1和s2的交集存放在r中,元素按由小到大存放;返回交集中元素个数
*/
}

只需按要求写出函数定义,并使用给定的测试程序测试你所定义函数的正确性。 不要改动 main 函数,可以定义其它函数。 测试正确后,将测试程序和函数定义一起提交。

#include <stdio.h>
#include <stdlib.h>
#define N 100

int Intersection(int s1[],int n1,int s2[],int n2,int r[])
{
    // Todo: your function definition
}
int main()
{
    int n1,n2,i;
    int s1[N],s2[N],r[N];

    scanf("%d",&n1);
    for(i=0;i<n1;i++)
        scanf("%d",&s1[i]);

    scanf("%d",&n2);
    for(i=0;i<n2;i++)
        scanf("%d",&s2[i]);

    int n=Intersection(s1,n1,s2,n2,r);
    for(i=0;i<n;i++)
        printf("%d ",r[i]);
    putchar('\n');

    return 0;
}

输入格式

第1行包含一个整数 n1(1n1100)n_1(1 \leq n_1 \leq 100),为集合 s1s_1 的大小。 第2行包含由空格分开的 n1n_1 个整数,为集合 s1s_1 中的元素。 第3行包含一个整数 n2(1n2100)n_2(1 \leq n_2 \leq 100),为集合 s2s_2 的大小。 第4行包含由空格分开的 n2n_2 个整数,为集合 s2s_2 中的元素。

输出格式

在一行中由小到大输出 s1s_1s2s_2 交集中的元素,两个整数之间用一个空格分开。

样例

输入

5
1 2 3 4 5
5
5 4 3 2 1

输出

1 2 3 4 5

输入

1
8
4
6 1 4 2

输出

输入

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

输出

2 8