博客
关于我
L2-005 集合相似度 (25 分)
阅读量:569 次
发布时间:2019-03-09

本文共 1428 字,大约阅读时间需要 4 分钟。

为了解决这个问题,我们需要计算两个集合之间的相似度。集合相似度通常是指两个集合中元素的重叠程度,或者说它们的交集占总元素数的比例。我们可以使用C++来实现这一点。

方法思路

  • 读取输入数据:首先读取集合的总数N,然后读取每个集合的元素数目及其元素。
  • 存储集合元素:对于每个集合,去重并存储其元素。
  • 处理查询:对于每个查询,读取两个集合的位置,计算它们的交集元素数目,然后计算相似度。
  • 计算相似度:相似度计算为交集元素数目占总元素数的比例,结果保留两位小数。
  • 解决代码

    #include 
    #include
    #include
    #include
    using namespace std;int main() { istringstream iss(input_data); vector
    > sets; // 读取集合数量N int N; iss >> N; for (int i = 0; i < N; ++i) { // 读取当前集合的元素数目K int K; iss >> K; unordered_set
    current_set; for (int j = 0; j < K; ++j) { int num; iss >> num; current_set.insert(num); } sets.push_back(current_set); } // 读取查询次数M int M; iss >> M; for (int m = 0; m < M; ++m) { int pos1, pos2; iss >> pos1 >> pos2; unordered_set
    & s1 = sets[pos1]; unordered_set
    & s2 = sets[pos2]; // 计算交集元素个数 unordered_set
    intersection; for (int num : s1) { if (s2.count(num)) { intersection.insert(num); } } int same = intersection.size(); int total = s1.size() + s2.size() - same; double similarity = (same * 100.0) / total; printf("%.2lf%%\n", similarity); } return 0;}

    代码解释

  • 读取输入数据:使用istringstream读取输入数据,逐个处理每个集合的元素。
  • 存储集合元素:使用unordered_set去重存储每个集合的元素。
  • 处理查询:对于每个查询,读取两个集合的位置,计算它们的交集元素数目。
  • 计算相似度:计算交集元素数目占总元素数的比例,结果保留两位小数并输出。
  • 这个方法确保了我们能够高效且准确地计算集合之间的相似度。

    转载地址:http://ieipz.baihongyu.com/

    你可能感兴趣的文章
    mysql 字段区分大小写
    查看>>
    mysql 字段合并问题(group_concat)
    查看>>
    mysql 字段类型类型
    查看>>
    MySQL 字符串截取函数,字段截取,字符串截取
    查看>>
    MySQL 存储引擎
    查看>>
    mysql 存储过程 注入_mysql 视图 事务 存储过程 SQL注入
    查看>>
    MySQL 存储过程参数:in、out、inout
    查看>>
    mysql 存储过程每隔一段时间执行一次
    查看>>
    mysql 存在update不存在insert
    查看>>
    Mysql 学习总结(86)—— Mysql 的 JSON 数据类型正确使用姿势
    查看>>
    Mysql 学习总结(87)—— Mysql 执行计划(Explain)再总结
    查看>>
    Mysql 学习总结(88)—— Mysql 官方为什么不推荐用雪花 id 和 uuid 做 MySQL 主键
    查看>>
    Mysql 学习总结(89)—— Mysql 库表容量统计
    查看>>
    mysql 实现主从复制/主从同步
    查看>>
    mysql 审核_审核MySQL数据库上的登录
    查看>>
    mysql 导入 sql 文件时 ERROR 1046 (3D000) no database selected 错误的解决
    查看>>
    mysql 导入导出大文件
    查看>>
    mysql 将null转代为0
    查看>>
    mysql 常用
    查看>>
    MySQL 常用列类型
    查看>>