【PTA】​L1-034 点赞(C++)

简介: 【PTA】​L1-034 点赞(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

思路:

这个程序是一个简单的计数程序,用于找出在给定的一系列数字中,哪个数字出现的次数最多,并输出这个数字以及它出现的次数。程序使用了一个大小为1001的数组来记录每个数字出现的次数,然后遍历这个数组找出出现次数最多的数字。

让我们逐步分析代码:

头文件、命名空间:这包括了几乎所有的标准库,并使用了 std 命名空间,定义一个常量N,值为1001,定义数组的最大长度。

#include <bits/stdc++.h>  
using namespace std;

主函数:这是程序的入口点。

int main()
 
{
 
       ....
 
}

声明变量:这里声明了四个整数变量:n用于存储输入的组数,idx是一个大小为1001的数组,用于存储数字0到1000出现的次数(初始化为0),max用于存储数字出现的最大次数(初始化为0),x用于临时存储输入的每个数字。

int n;  
int idx[1001] = {0};  
int max = 0;  
int x;

* `n`:表示将要输入的组数。  

* `idx[1001]`:一个数组,用于存储从0到1000的整数出现的次数。  

* `max`:用于存储出现次数最多的次数。  

* `x`:用于临时存储输入的整数。

输入组数:程序首先读入一个整数n,表示接下来有n组输入。如果n为0,则程序直接返回。

cin >> n;  
if(n == 0)  
    return 0;

处理每组输入:这是一个while循环,用于处理n组输入。对于每一组输入,首先读入一个整数k,表示接下来要读入k个数字。然后,通过一个for循环读入这k个数字,并将每个数字x在idx数组中的对应位置加1,以记录这个数字出现的次数。

while(n--)  
{  
    int k;  
    cin >> k;  
    for(int i = 0; i < k; i++)  
    {  
        cin >> x;  
        idx[x] ++;  
    }   
}

* 对于每组输入,首先读取一个整数 `k`,表示接下来要输入的整数数量。

* 然后,对于这 `k` 个整数,每个整数 `x` 被读取,并增加 `idx[x]` 的值,即增加 `x` 出现的次数。

找出出现次数最多的数字:这个for循环遍历idx数组,找出出现次数最多的数字以及这个数字出现的次数。t用于存储出现次数最多的数字,max用于存储这个数字出现的次数。

int t = 0;  
for(int i = 0; i < 1001; i++)  
{  
    if(idx[i] >= max)  
    {  
        max = idx[i];  
        t = i;  
    }  
}

* 遍历 `idx` 数组,找出出现次数最多的整数 `t` 和其出现次数 `max`。

输出结果:最后,程序输出出现次数最多的数字t以及这个数字出现的次数max。

cout << t << " " << max << endl;

注意:

  • 这个程序只考虑了0到1000的整数。如果输入的整数超出了这个范围,程序可能不会正常工作。
  • 数组 idx 的大小是固定的(1001),这意味着程序不能处理超过这个范围的整数。如果需要处理更大的整数,需要修改数组的大小或使用其他数据结构,如 unordered_map。

代码:

#include <bits/stdc++.h>
 
using namespace std;
 
int main()
{
 
    int n;
    int idx[1001] = {0};
    int max = 0;
    int x;
    cin >> n;
    if(n == 0)
        return 0;
    while(n--)
    {
        int k;
        cin >> k;
        
        for(int i = 0; i < k; i++)
        {
            cin >> x;
            idx[x] ++;
        } 
    }
    int t = 0;
    for(int i = 0; i < 1001; i++)
    {
        if(idx[i] >= max)
        {
            max = idx[i];
            t = i;
        }
    }
    cout << t << " " << max << endl;
    return 0;
}

测试结果:

目录
相关文章
|
4月前
|
C++
【PTA】L1-016 验证身份(C++)
【PTA】L1-016 验证身份(C++)
74 0
【PTA】L1-016 验证身份(C++)
|
3月前
|
存储 C++
【PTA】L1-039 古风排版(C++)
【PTA】L1-039 古风排版(C++)
24 1
|
4月前
|
Java C++
部落(pta)(并查集) Java以及C++
部落(pta)(并查集) Java以及C++
41 2
|
3月前
|
存储 人工智能 C++
【PTA】L1-064 估值一亿的AI核心代码(详C++)
【PTA】L1-064 估值一亿的AI核心代码(详C++)
30 1
|
3月前
|
存储 C++ 索引
【PTA】L1-059 敲笨钟(C++)
【PTA】L1-059 敲笨钟(C++)
20 1
|
3月前
|
存储 人工智能 C++
【PTA】L1-093 猜帽子游戏(C++)
【PTA】L1-093 猜帽子游戏(C++)
46 1
|
3月前
|
C++
【PTA】L1-046 整除光棍(C++)
【PTA】L1-046 整除光棍(C++)
27 1
|
3月前
|
存储 C++
【PTA】L1-043 阅览室(C++)
【PTA】L1-043 阅览室(C++)
24 1
|
4月前
|
前端开发 JavaScript 测试技术
【PTA】L1-32 Left-pad (C++)
【PTA】L1-32 Left-pad (C++)
36 0
【PTA】L1-32 Left-pad (C++)
|
4月前
|
C++
【PTA】L1-011 A-B (C++)
【PTA】L1-011 A-B (C++)
89 0
【PTA】L1-011 A-B (C++)