PTA L1-034 点赞(详解)
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
前言本期是关于点赞的详解内容包括四大模块题目代码实现大致思路代码解读今天你c了吗
题目:
微博上有个“点赞”功能你可以为你喜欢的博文点个赞表示支持。每篇博文都有一些刻画其特性的标签而你点赞的博文的类型也间接刻画了你的特性。本题就要求你写个程序通过统计一个人点赞的纪录分析这个人的特性。
输入格式
输入在第一行给出一个正整数N≤1000是该用户点赞的博文数量。随后N行每行给出一篇被其点赞的博文的特性描述格式为“K F1⋯FK”其中1≤K≤10Fii=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
代码实现
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int i = 0;
int arr[1001] = { 0 };
for (i = 0; i < n; i++)
{
int k = 0;
scanf("%d", &k);
int j = 0;
for (j = 0; j < k; j++)
{
int tmp = 0;
scanf("%d", &tmp);
arr[tmp] += 1;
}
}
int max = arr[0];
int index = 0;
for (i = 1; i < 1001; i++)
{
if (arr[i] >= max)
{
max = arr[i];
index = i;
}
}
printf("%d %d", index, max);
return 0;
}
大致思路
预备了解
arr数组存储每个特性标签编号出现的次数
tmp存储每个特性标签的值
max存储最常出现的特性标签
index存储最常出现的特性标签的下标
代码解读
part 1统计每个特性标签的个数
int n = 0;
scanf("%d", &n);
int i = 0;
int arr[1001] = { 0 };
for (i = 0; i < n; i++)
{
int k = 0;
scanf("%d", &k);
int j = 0;
for (j = 0; j < k; j++)
{
int tmp = 0;
scanf("%d", &tmp);
arr[tmp] += 1;
}
}
第一个for循环用于实现输入的行数n
k用于存储一篇文章的特性标签个数
将特性标签编号的数值作为arr数组的下标对应唯一的空间一个特性标签的编号出现一次它作为下标所对应的空间内容+1
part 2: 找出最常出现的特性标签
int max = arr[0];
int index = 0;
for (i = 1; i < 1001; i++)
{
if (arr[i] >= max)
{
max = arr[i];
index = i;
}
}
printf("%d %d", index, max);
arr数组中的元素内容代表某个特性标签出现的次数
arr数组中的下标代表某个特性标签的编号
将数组中的第一个元素作为最常出现的特性标签将它出现的次数存于max中遍历整个arr数组若是arr数组中的某个元素代表一个特性标签出现的次数大于max则更新max的内容并记录这个元素的下标
最后打印下标index和max