用c++语言编写本关的编程任务是完成文件 step6/upvote.cpp 的编写,以实现朋友圈点赞的功能。 upvote.cpp 文件为空,需要你从头开始编写。具体要求如下: 程序的输入格式为: 第一行输入一个正整数 N ( N < 1000 ),是该用户点赞的文章数量。 随后的 N 行,每行给出一篇被其点赞的文章的标签描述,格式为“k S 1 S 2 ......S k ”。 k表示该文章的标签数,1≤k≤10,即每篇文章最多10个标签; S k 是标签,是1到1000之间的整数,即总共有不超过1000种标签。 所有数值之间以空格分隔。 程序的输出格式为: 统计所有被点赞的文章中最常出现的那个标签,在一行中输出它的标签编号和出现次数,数字间隔1个空格。如果有并列,则输出编号最大的那个。
时间: 2023-12-03 10:45:03 浏览: 32
以下是 upvote.cpp 的代码实现:
```c++
#include <iostream>
#include <unordered_map>
using namespace std;
int main() {
int n;
cin >> n;
unordered_map<int, int> countMap;
int maxCount = 0, maxTag = 0;
for (int i = 0; i < n; i++) {
int k;
cin >> k;
for (int j = 0; j < k; j++) {
int tag;
cin >> tag;
countMap[tag]++;
if (countMap[tag] > maxCount || (countMap[tag] == maxCount && tag > maxTag)) {
maxCount = countMap[tag];
maxTag = tag;
}
}
}
cout << maxTag << " " << maxCount << endl;
return 0;
}
```
代码思路:
1. 首先读入一个整数 n,表示该用户点赞的文章数量。
2. 接下来读入 n 行数据,每行数据表示一篇被点赞的文章的标签描述。
3. 对于每篇文章的标签,我们使用 unordered_map 来进行计数。同时记录当前出现次数最多的标签编号 maxTag 和出现次数 maxCount。
4. 最后输出 maxTag 和 maxCount 即可。
时间复杂度为 O(nk),其中 n 为文章数量,k 为每篇文章的标签数。由于数据规模较小,可以通过本题。