Establecer ejercicios relacionados

Pregunta A: Establecer similitud

http://codeup.cn/problem.php?cid=100000597&pid=0 El
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
tema dice: primero calcule la intersección Nc de los dos conjuntos después de la deduplicación, luego calcule la unión de los dos elementos y la deduplicación Nt, y divida los dos.
ejemplo:

12 集合  交集有 87  101
并集有    99   87  101  5
2/4=0.5

13 集合  交集有 99   101
并集有    87  101   99  18   5  135   
2/6=1/3

La idea es encontrar el número n de números repetidos de ayb y
luego usar a.size () + b.size () - n = número de unión m
n / m

#include<cstdio>
#include<set>
#include<iostream>
using namespace std;
set<int> s[200];
int main(void)
{
    
    
	int n;
	int m;
	int i,j;
	int number;
	cin>>n;
	j=0;
	while(n)
	{
    
    
		cin>>m;
		for(i=0;i<m;i++)
		{
    
    
			scanf("%d",&number);
			s[j].insert(number);
		}
		n--;
		j++; 
	}
	int w,a,b;
	set<int>::iterator it;
	cin>>w;
	while(w)
	{
    
    
		scanf("%d %d",&a,&b);
		int temp;
		int count=0;
		for(it=s[a-1].begin();it!=s[a-1].end();it++)
		{
    
    
			if(s[b-1].find(*it)!=s[b-1].end())//说明重复了 
			{
    
    
				count++;
			}
		}
		int ans=s[b-1].size()+s[a-1].size()-count;
		printf("%.1lf%%\n",100*(double)count/ans);
		w--;
	}
	return 0;
} 

Supongo que te gusta

Origin blog.csdn.net/qq_46527915/article/details/115167635
Recomendado
Clasificación