【GPLT】 集合相似度(c++)


题目如下:

这题主要用来练习stl的使用,是一道比较简单的题目

AC代码如下

#include
#include
#include
#include
#include
#include
#include
using namespace std;
unordered_set s[55];//允许有重复的,
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        int k;
        cin>>k;
        int x;
        while(k--)
        {
            cin>>x;
            s[i].insert(x);
        }
    }
    int m;
    cin>>m;
    for(int i=1;i<=m;i++)
    {
        int a,b;
        cin>>a>>b;
        double sum=0,num=0;
        for(auto x : s[a])
        {
            if(s[b].count(x)) num++;//计算重复
        }
        sum=s[a].size()+s[b].size()-num;//去掉重复的就是不重复的所有个数
        printf("%.2lf%%\n",num*100/sum);
    }
    return 0;
}

相关