编写一个C++代码新浪微博上有个悄悄关注一个用户悄悄关注的人不出现在这个用户的关注列表上但系统会推送其悄悄关注的人发表的微博给该用户。现在我们来做一回网络侦探根据某人的关注列表和其对其他用户的点赞情况扒出有可能被其悄悄关注的人。输入格式:输入首先在第一行给出某用户的关注列表格式如下:人数N 用户1 用户2 …… 用户N其中N是不超过5000的正整数每个用户ii=1 N是被其关注的用户的ID是长度
以下是一个可能的C++代码实现:
#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
// 用户结构体,用于存储用户ID和点赞次数
struct User {
std::string id;
int likes;
User(std::string _id, int _likes) : id(_id), likes(_likes) {}
};
bool compareUser(const User& u1, const User& u2) {
return u1.id < u2.id;
}
int main() {
// 读取用户关注列表
int n;
std::cin >> n;
std::vector<std::string> followList(n);
for (int i = 0; i < n; i++) {
std::cin >> followList[i];
}
// 读取用户点赞信息
int m;
std::cin >> m;
std::map<std::string, int> likesMap;
int totalLikes = 0;
for (int i = 0; i < m; i++) {
std::string id;
int likes;
std::cin >> id >> likes;
likesMap[id] = likes;
totalLikes += likes;
}
// 计算点赞平均数
double averageLikes = static_cast<double>(totalLikes) / m;
// 检查每个点赞的用户,判断是否可能是悄悄关注的人
std::vector<User> possibleSecretFans;
for (const auto& entry : likesMap) {
const std::string& id = entry.first;
int likes = entry.second;
if (likes > averageLikes && std::find(followList.begin(), followList.end(), id) == followList.end()) {
possibleSecretFans.push_back(User(id, likes));
}
}
// 按字母序升序排序并输出结果
std::sort(possibleSecretFans.begin(), possibleSecretFans.end(), compareUser);
if (possibleSecretFans.empty()) {
std::cout << "Bing Mei You" << std::endl;
} else {
for (const auto& user : possibleSecretFans) {
std::cout << user.id << std::endl;
}
}
return 0;
}
该代码首先读取用户关注列表和点赞信息,并计算点赞平均数。然后,它检查每个点赞的用户,如果该用户的点赞次数大于平均值且不在关注列表中,则将其添加到可能是悄悄关注的人的列表中。最后,它对可能的悄悄关注的人的列表按字母序进行排序,并输出结果。如果没有符合条件的人,则输出"Bing Mei You"
原文地址: https://www.cveoy.top/t/topic/h5e8 著作权归作者所有。请勿转载和采集!