问题描述 宇宙集团对QIT的课程做了一个满意度调查,一共在校园内抽取了N个同学,对本学期的M种课程进行满意度调查。宇宙集团的小Y想知道,有多少门课是被所有调查到的同学都喜欢的。 输入描述 第一行输入两个整数N, M(1 < = N, M < = 1000) 接下来的N行里, 每行的开头有一个整数A(0 < = A < = M),表示这个同学喜欢的课程数量,接下来的A个元素表示他所喜欢的课程编号(1 < = 编号 < = M),每个元素之间以空格间隔。 输出描述 输出一个整数表示答案。 样例输入 3 4 2 1 3 3 1 2 3 2 3 2 样例输出 1用C语言怎么编写
时间: 2024-01-26 18:04:32 浏览: 65
以下是一种可能的 C 语言实现方式:
```c
#include <stdio.h>
#include <string.h>
#define MAX_N 1000
#define MAX_M 1000
int main() {
int n, m;
int cnt[MAX_M + 1]; // cnt[i] 表示喜欢第 i 门课的同学数
memset(cnt, 0, sizeof(cnt)); // 初始化为 0
scanf("%d %d", &n, &m);
for (int i = 0; i < n; i++) {
int a;
scanf("%d", &a);
for (int j = 0; j < a; j++) {
int k;
scanf("%d", &k);
cnt[k]++; // 统计喜欢第 k 门课的同学数
}
}
int ans = 0;
for (int i = 1; i <= m; i++) {
if (cnt[i] == n) { // 如果所有同学都喜欢第 i 门课
ans++; // 答案加一
}
}
printf("%d\n", ans);
return 0;
}
```
首先定义一个数组 `cnt`,其中 `cnt[i]` 表示喜欢第 `i` 门课的同学数。初始化为 0。然后按照输入顺序遍历每个同学喜欢的课程,统计喜欢每门课的同学数。最后遍历所有课程,如果所有同学都喜欢第 `i` 门课,则答案加一。实现中使用了 `memset()` 函数将数组 `cnt` 初始化为 0。
阅读全文