给你两个序列,长度相等 请找出两个序列中共同出现的元素 由于有多种输出方式,这里我们要求按照所有共同出现的元素从小到大顺序输出,如果重复多次,也只用输出一次,如果一个共同出现的数都没有,输出0即可。 题目保证序列中的元素一定是正整数 输入 第一行一个正整数t,表示有t组数据 每一组第一行一个正整数n,表示序列的长度,序列长度不超过100 每一组第二行和第三行分别为两个序列的元素,序列中每个元素都不超过100, 用c语言数组写代码
时间: 2023-11-22 12:54:20 浏览: 127
找出两个升序序列的中位数算法理解
以下是用 C 语言实现的代码:
```c
#include <stdio.h>
int main() {
int t;
scanf("%d", &t);
while (t--) {
int n;
scanf("%d", &n);
int a[100], b[100];
for (int i = 0; i < n; ++i) {
scanf("%d", &a[i]);
}
for (int i = 0; i < n; ++i) {
scanf("%d", &b[i]);
}
int common[101] = {0}; // 记录共同出现的元素
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
if (a[i] == b[j]) {
common[a[i]] = 1;
}
}
}
int found = 0; // 判断是否有共同出现的元素
for (int i = 1; i <= 100; ++i) {
if (common[i]) {
printf("%d ", i);
found = 1;
}
}
if (!found) {
printf("0");
}
printf("\n");
}
return 0;
}
```
代码思路:
1. 读入测试数据组数 `t`。
2. 对于每组测试数据,读入序列长度 `n`,以及两个序列 `a` 和 `b`。
3. 定义一个大小为 101 的数组 `common`,用于记录两个序列中共同出现的元素。初始值全部为 0。
4. 遍历两个序列,如果某个元素在另一个序列中也出现过,就将 `common` 数组对应位置的值设为 1。
5. 遍历 `common` 数组,输出所有值为 1 的下标,表示共同出现的元素。如果没有共同出现的元素,输出 0。
6. 处理完一组测试数据后,继续处理下一组。
阅读全文