给你两个序列,长度相等 请找出两个序列中共同出现的元素 由于有多种输出方式,这里我们要求按照所有共同出现的元素从小到大顺序输出,如果重复多次,也只用输出一次,如果一个共同出现的数都没有,输出0即可。 题目保证序列中的元素一定是正整数 输入 第一行一个正整数t,表示有t组数据 每一组第一行一个正整数n,表示序列的长度,序列长度不超过100 每一组第二行和第三行分别为两个序列的元素,序列中每个元素都不超过100, 输出
时间: 2023-11-22 09:54:20 浏览: 35
以下是 Python 代码实现:
```python
t = int(input())
for _ in range(t):
n = int(input())
seq1 = list(map(int, input().split()))
seq2 = list(map(int, input().split()))
common = sorted(set(seq1) & set(seq2))
if common:
print(*common)
else:
print(0)
```
首先读入测试数据组数 `t`,然后循环处理每一组数据。对于每一组数据,首先读入序列长度 `n`,以及两个序列 `seq1` 和 `seq2`。接着使用集合求交集,找出两个序列中共同出现的元素,将其排序并输出即可。如果没有共同出现的元素,则输出 0。
相关问题
C语言给你两个序列,长度相等 请找出两个序列中共同出现的元素 由于有多种输出方式,这里我们要求按照所有共同出现的元素从小到大顺序输出,如果重复多次,也只用输出一次,如果一个共同出现的数都没有,输出0即可。 题目保证序列中的元素一定是正整数 输入 第一行一个正整数t,表示有t组数据 每一组第一行一个正整数n,表示序列的长度,序列长度不超过100 每一组第二行和第三行分别为两个序列的元素,序列中每个元素都不超过100,
以下是C语言的代码实现:
```
#include <stdio.h>
#define MAX_N 100
int main() {
int t;
scanf("%d", &t);
while (t--) {
int n;
scanf("%d", &n);
int a[MAX_N], b[MAX_N];
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
for (int i = 0; i < n; i++) {
scanf("%d", &b[i]);
}
int res[MAX_N], cnt = 0;
for (int i = 1; i <= 100; i++) {
int flag = 0;
for (int j = 0; j < n; j++) {
if (a[j] == i) {
flag = 1;
break;
}
}
if (flag) {
for (int j = 0; j < n; j++) {
if (b[j] == i) {
flag = 2;
break;
}
}
}
if (flag == 2) {
res[cnt++] = i;
}
}
if (cnt == 0) {
printf("0\n");
} else {
for (int i = 0; i < cnt; i++) {
printf("%d ", res[i]);
}
printf("\n");
}
}
return 0;
}
```
解释:
1. 首先,通过 `scanf` 读入测试数据组数 `t`。
2. 对于每组测试数据,先读入序列长度 `n`,然后读入两个序列 `a` 和 `b`。
3. 用 `res` 数组存储共同出现的元素,`cnt` 记录共同出现的元素个数。
4. 遍历所有可能出现的元素,即从 1 到 100,如果这个元素在序列 `a` 中出现过,则检查它是否在序列 `b` 中也出现过,如果是,则将它加入 `res` 数组中。
5. 如果 `cnt` 为 0,则说明没有共同出现的元素,输出 0。
6. 如果 `cnt` 不为 0,则按照从小到大的顺序输出 `res` 数组中的元素。
注意事项:
1. 序列中的元素一定是正整数,因此可以用 0 表示一个元素未出现。
2. 如果一个共同出现的数重复出现多次,只需要输出一次即可。
c语言给你两个序列,长度相等 请找出两个序列中共同出现的元素 由于有多种输出方式,这里我们要求按照所有共同出现的元素从小到大顺序输出,如果重复多次,也只用输出一次,如果一个共同出现的数都没有,输出0即可。 题目保证序列中的元素一定是正整数 输入 第一行一个正整数t,表示有t组数据 每一组第一行一个正整数n,表示序列的长度,序列长度不超过100 每一组第二行和第三行分别为两个序列的元素,序列中每个元素都不超过100, 输出 每一组数据输出两个序列中共同出现的元素
以下是C语言的代码实现:
```
#include <stdio.h>
#define MAX_N 100
int main() {
int t;
scanf("%d", &t);
while (t--) {
int n;
scanf("%d", &n);
int a[MAX_N], b[MAX_N], c[MAX_N] = {0};
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
for (int i = 0; i < n; i++) {
scanf("%d", &b[i]);
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (a[i] == b[j]) {
c[a[i] - 1] = 1;
break;
}
}
}
int flag = 0;
for (int i = 0; i < 100; i++) {
if (c[i]) {
if (flag) {
printf(" ");
}
printf("%d", i + 1);
flag = 1;
}
}
if (!flag) {
printf("0");
}
printf("\n");
}
return 0;
}
```
解释:
1. 首先,通过 `scanf` 读入测试数据组数 `t`。
2. 对于每组测试数据,先读入序列长度 `n`,然后读入两个序列 `a` 和 `b`。
3. 用 `c` 数组记录两个序列中共同出现的元素,即如果一个元素在序列 `a` 和 `b` 中都出现过,则将 `c` 数组对应位置设为 1。
4. 遍历 `c` 数组,输出所有值为 1 的下标加 1,即共同出现的元素从小到大顺序输出。
5. 如果没有共同出现的元素,则输出 0。
注意事项:
1. 序列中的元素一定是正整数,因此可以用 0 表示一个元素未出现。
2. 输出时要注意格式,每个数之间用空格隔开,最后要换行。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)