PAT甲级-集合set、stl的使用-1063 Set Similarity解题思路

1063 Set Similarity (25 分)

在这里插入图片描述

思路

set的各种用法,遍历需要使用迭代器
set::iterator iter

代码

#include<bits/stdc++.h>
using namespace std;

const int N = 51;
set<int> s[N];

int main(){
    
    
    int n;
    scanf("%d",&n);
    for(int i =0;i<n;i++)
    {
    
    
        int num,in;
        scanf("%d",&num);
        for(int j =0;j<num;j++)
        {
    
    
            scanf("%d",&in);
            s[i].insert(in);
        }
    }

    int m,one,two;
    scanf("%d",&m);
    for(int i =0;i<m;i++)
    {
    
    
        scanf("%d%d",&one,&two);
        set<int>::iterator iter;
        int ans = 0;
        int len = s[two-1].size();
        for(iter = s[one-1].begin();iter!=s[one-1].end();iter++)
        {
    
    
            if(s[two-1].find(*iter)!=s[two-1].end())
                ans++;
            else len++;
        }
        
        double value = double(ans)/len*100;
        printf("%.1lf",value);
        cout<<"%"<<endl;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43999137/article/details/114657155