请使用c++编写程序,程序要求如下: 程序的输入格式为: 第一行输入一个正整数 N ( N < 1000 ),代表用户点赞的文章数量。随后的 N 行,每行给出一篇被其点赞的文章的标签,格式为“k S1 S2......Sk”。 k表示该文章的标签数,1≤k≤10,即每篇文章最多10个标签; Sk是标签,是1到1000之间的整数,即总共有不超过1000种标签。 所有数值之间以空格分隔。 程序的输出格式为: 统计所有被点赞的文章中最常出现的那个标签,在一行中输出它的标签编号和出现次数,数字间隔1个空格。如果有并列,则输出编号最大的那个。 例如输入 4 3 889 233 2 5 100 3 233 2 73 4 3 73 889 2 2 233 123 输出结果为233 3,因为上述示例中出现最多次(3次)的标签有233和2,存在并列时,输出最大的那个标签233,然后输出其出现的次数3。
时间: 2024-01-22 19:18:43 浏览: 27
以下是使用C++编写的程序:
```c++
#include <iostream>
#include <map>
using namespace std;
int main() {
int n, k, tag, max_tag = 0, max_count = 0;
map<int, int> tags_count;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> k;
for (int j = 0; j < k; j++) {
cin >> tag;
tags_count[tag]++;
if (tags_count[tag] > max_count || (tags_count[tag] == max_count && tag > max_tag)) {
max_tag = tag;
max_count = tags_count[tag];
}
}
}
cout << max_tag << " " << max_count << endl;
return 0;
}
```
程序中使用了一个 `map` 数据结构来记录每个标签出现的次数,遍历完所有文章后找到出现次数最多的标签并输出即可。技巧在于同时记录出现次数最多的标签编号和出现次数,并在遍历过程中实时更新这两个值。