Définir des exercices connexes

Question A: Définir la similarité

http://codeup.cn/problem.php?cid=100000597&pid=0 Le
Insérez la description de l'image ici
Insérez la description de l'image ici
sujet dit: calculez d'abord l'intersection Nc des deux ensembles après déduplication, puis calculez l'union des deux éléments et la déduplication Nt, et divisez les deux.
Exemple:

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

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

L'idée est de trouver le nombre n de nombres répétés de a et b
puis d'utiliser a.size () + b.size () - n = nombre d'union 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;
} 

Je suppose que tu aimes

Origine blog.csdn.net/qq_46527915/article/details/115167635
conseillé
Classement