7-9 集合相似度 给定两个整数集合,它们的相似度定义为:N ​c ​​ /N ​t ​​ ×100%。其中N ​c ​​ 是两个集合都有的不相等整数的个数,N ​t ​​ 是两个集合一共有的不相「建议收藏」

7-9 集合相似度 给定两个整数集合,它们的相似度定义为:N ​c ​​ /N ​t ​​ ×100%。其中N ​c ​​ 是两个集合都有的不相等整数的个数,N ​t ​​ 是两个集合一共有的不相「建议收藏」7-9 集合相似度 给定两个整数集合,它们的相似度定义为:N ​c ​​ /N ​t ​​ ×100%。其中N ​c ​​是两个集合都有的不相等整数的个数,N ​t ​​ 是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。输入格式: 输入第一行给出一个正整数N(≤50),是集合的个数。随后N行,每行对应一个集合。每个集合首先给出一个正整数M(≤10 ​4 ​​)…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

7-9 集合相似度 给定两个整数集合,它们的相似度定义为:N ​c ​​ /N ​t ​​ ×100%。其中N ​c ​​
是两个集合都有的不相等整数的个数,N ​t ​​ 是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。

输入格式: 输入第一行给出一个正整数N(≤50),是集合的个数。随后N行,每行对应一个集合。每个集合首先给出一个正整数M(≤10 ​4 ​​
),是集合中元素的个数;然后跟M个[0,10 ​9 ​​ ]区间内的整数。

之后一行给出一个正整数K(≤2000),随后K行,每行对应一对需要计算相似度的集合的编号(集合从1到N编号)。数字间以空格分隔。

输出格式: 对每一对需要计算的集合,在一行中输出它们的相似度,为保留小数点后2位的百分比数字。

  输入样例: 
  3 
  3 99 87 101 
  4 87 101 5 87 
  7 99 101 18 5 135 18 99 
  2 
  1 2 
  1 3

  
 输出样例:
  50.00%
  33.33%
#include<iostream>
#include<stdio.h>
#include<set>
using namespace std;

set<int> s[55];
int n, m;	// n记录几组,m记录每组第一个数,即元素个数

int main()
{ 
   
	cin>>n;
	for (int i = 1; i <= n; i++)
	{ 
   
		cin>>m;
		while (m--)		// 牛逼 多学学 m是零的时候就不执行 真牛逼
		{ 
   
			int num;
			cin>>num;
			s[i].insert(num);	 // 往set容器里插入元素
		}
	}

	int k;
	cin>>k;
	while (k--)
	{ 
   
		int a, b;	// 记录索要计算的行
		cin >> a >> b;
		set<int>::iterator it; // 建立迭代器,用于查找
		int cnta = s[a].size(), cntb = s[b].size(), cnt = 0;
		for (it = s[a].begin(); it != s[a].end(); it++)
		{ 
   
			if (s[b].find(*it) != s[b].end())
				cnt++;
		}
		printf("%.2lf%\n", cnt*1.0 / (cnta + cntb - cnt) * 100);
	}
	return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/170893.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • adt-bundle更新eclipse,以及搭建android环境

    adt-bundle更新eclipse,以及搭建android环境

  • MATLAB插值函数interp1

    MATLAB插值函数interp1插值法    插值法又称“内插法”,是利用函数f(x)在某区间中已知的若干点的函数值,作出适当的特定函数,在区间的其他点上用这特定函数的值作为函数f(x)的近似值,这种方法称为插值法。如果这特定函数是多项式,就称它为插值多项式。线性插值法    线性插值法是指使用连接两个已知量的直线来确定在这两个已知量之间的一个未知量的值的方法。    

  • python中for循环加速_如何提高python 中for循环的效率[通俗易懂]

    python中for循环加速_如何提高python 中for循环的效率[通俗易懂]对于某个城市的出租车数据,一天就有33210000条记录,如何将每辆车的数据单独拎出来放到一个专属的文件中呢?思路很简单:就是循环33210000条记录,将每辆车的数据搬运到它该去的文件中。但是对于3000多万条数据,一个一个循环太消耗时间,我花了2个小时才搬运了60万数据,算算3000万我需要花费100个小时,也就需要4-5天。并且还需要保证这五天全天开机,不能出现卡机的事故。因此,需要使用并行…

  • System.out.println什么意思_out的意思是

    System.out.println什么意思_out的意思是在Java编程中,我们常常用 System.out.println(); 来输出字符串,也许我们都已经猜到println()是方法名,但System是什么,out又是什么呢?  其实System是java.lang里面的一个类,如下图:     而out就是System里面的一个静态数据成员,而且这个成员是java.io.PrintStream类的引用。如下图,被关键字static修饰的成员可…

  • Response.Write具体介绍

    Response.Write具体介绍

  • Mybatis二级缓存_java一级缓存二级缓存

    Mybatis二级缓存_java一级缓存二级缓存在mybatis中,如果要使用二级缓存,就必须使javabean类实现Serializable(序列号)接口未实现序列化接口报错:关于为什么要实现序列化,我浏览了这个兄弟的文章为什么pojo类要实现序列化

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号