L2-005. 集合相似度
参考:http://blog.csdn.net/qsort_/article/details/51833704
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <set>
using namespace std;
int main()
{
int n, m, k, a, l, r;
set<int> s[50];
scanf("%d", &n) ;
for(int i=0; i<n; i++)
{
scanf("%d", &m);
for(int j=0; j<m; j++)
{
cin >> a;
s[i].insert(a);
}
}
set<int>::iterator it;
cin >> k;
int co;
while(k--)
{
cin >> l >> r;
l--;
r--;
co = 0;
for(it=s[l].begin(); it!=s[l].end(); it++ )
{
if(s[r].count((*it))) //如果找到了,给co加1,最后得到l和r集合相同元素的个数
co++;
}
printf("%.2lf%%\n", (double)co/(double)(s[l].size() + s[r].size() - co)*100);
}
return 0;
}

浙公网安备 33010602011771号