C语言代码:通过点赞记录分析用户特性
C语言代码:通过点赞记录分析用户特性
问题描述: 给定一个用户的点赞记录,每个记录包含多个特性标签。请统计所有点赞博文中出现次数最多的特性标签,并输出其编号和出现次数。
输入格式: 输入在第一行给出一个正整数N(≤1000),是该用户点赞的博文数量。随后N行,每行给出一篇被其点赞的博文的特性描述,格式为'K F1 ⋯FK',其中1≤K≤10,Fi(i=1,⋯,K)是特性标签的编号,我们将所有特性标签从1到1000编号。数字间以空格分隔。
输出格式: 统计所有被点赞的博文中最常出现的那个特性标签,在一行中输出它的编号和出现次数,数字间隔1个空格。如果有并列,则输出编号最大的那个。
输入样例:
4
3 889 233 2
5 100 3 233 2 73
4 3 73 889 2
2 233 123
输出样例:
233 3
C语言代码:
#include <stdio.h>
#include <stdlib.h>
int main() {
int N, K, F, i, j, max_count = 0, max_label = 0;
int *counts = (int *)calloc(1001, sizeof(int)); // 统计每个标签出现的次数
scanf('%d', &N);
for (i = 0; i < N; i++) {
scanf('%d', &K);
for (j = 0; j < K; j++) {
scanf('%d', &F);
counts[F]++; // 统计标签出现的次数
}
}
for (i = 1; i <= 1000; i++) {
if (counts[i] > max_count) {
max_count = counts[i];
max_label = i;
}
}
printf('%d %d
', max_label, max_count);
free(counts);
return 0;
}
代码解释:
- 使用
calloc函数分配一个大小为 1001 的整数数组counts,用于存储每个标签出现的次数。 - 循环读取输入的每个点赞记录,并统计每个标签出现的次数。
- 再次循环遍历
counts数组,找出出现次数最多的标签及其出现次数。 - 输出结果,并释放
counts数组所占用的内存空间。
注意:
- 代码中假设特性标签的编号在 1 到 1000 之间。
- 代码使用
calloc函数分配内存,并使用free函数释放内存,避免内存泄漏。 - 代码可根据实际情况进行修改和完善。
原文地址: https://www.cveoy.top/t/topic/oSbC 著作权归作者所有。请勿转载和采集!