STL_A1063 Set Similarity (25 分)

https://pintia.cn/problem-sets/994805342720868352/problems/994805409175420928

#include<iostream>
using namespace std;
#include<cstdio>
#include<set>

const int N=51;
set<int> st[N];
set<int>::iterator it;

//比较集合st[x]与st[y]
void compare(int x,int y) {
    int allNum=st[y].size();
    //利用集合st[y]统计总共不同元素个数
    int sameNum=0;
    //遍历集合st[x]
    for(it=st[x].begin();it!=st[x].end();it++) {
        if(st[y].find(*it)!=st[y].end()) sameNum++;
        else allNum++;
    }
    printf("%.1f%%\n",sameNum*100.0/allNum);
}

int main() {
    int n,k,q,v,st1,st2;
    scanf("%d",&n);
    for(int i=1;i<=n;i++) {
        scanf("%d",&k);
        for(int j=0;j<k;j++) {
            scanf("%d",&v);
            st[i].insert(v); //把元素v加入集合st[i]
        }
    }
    scanf("%d",&q);
    for(int i=0;i<q;i++) {
        scanf("%d %d",&st1,&st2);
        compare(st1,st2);
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/zengzhaojin1024/p/11364278.html