zoukankan      html  css  js  c++  java
  • L2-005. 集合相似度

    给定两个整数集合,它们的相似度定义为:Nc/Nt*100%。其中Nc是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。

    输入格式:

    输入第一行给出一个正整数N(<=50),是集合的个数。随后N行,每行对应一个集合。每个集合首先给出一个正整数M(<=104),是集合中元素的个数;然后跟M个[0, 109]区间内的整数。

    之后一行给出一个正整数K(<=2000),随后K行,每行对应一对需要计算相似度的集合的编号(集合从1到N编号)。数字间以空格分隔。

    输出格式:

    对每一对需要计算的集合,在一行中输出它们的相似度,为保留小数点后2位的百分比数字。

    输入样例:

    3
    3 99 87 101
    4 87 101 5 87
    7 99 101 18 5 135 18 99
    2
    1 2
    1 3
    

    输出样例:

    50.00%
    33.33%
    

    #include<iostream>
    #include<set>
    #include<map>>
    using namespace std;
    int main(){
    set<int> num[55];
    int n;
    cin>>n;
    for(int i =1;i<=n;i++){
    int m;
    cin>>m;
    int mid;
    for(int j =0;j<m;j++){
    cin>>mid;
    num[i].insert(mid);


    }
    }
    int m;
    cin>>m;
    set<int>::iterator it;
    int count=0;
    for(int i =0;i<m;i++){
    count =0;
    int fir,sec;
    cin>>fir>>sec;
    rit = num[sec].begin();
    for(it=num[fir].begin();it!=num[fir].end();it++){
    if(num[sec].count(*it))
    count++;

    }
    double dou =100*(double) count/(double)(num[fir].size()+num[sec].size()-count);
    printf("%.2f",dou);
    cout<<"%"<<endl;
    }

    return 0;
    }

  • 相关阅读:
    简单的四则运算
    11月28日-课堂测验
    01-实现简单的登录界面
    06-继承与多态-动手动脑
    04-String-动手动脑
    04-String
    03-类与对象-动手动脑
    iOS 审核加急通道使用--转载来源--有梦想的蜗牛
    多线程 队列的简单操作
    随机排列
  • 原文地址:https://www.cnblogs.com/cyj1258/p/8557684.html
Copyright © 2011-2022 走看看