博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PAT L2-005 集合相似度(模拟集合set)
阅读量:5319 次
发布时间:2019-06-14

本文共 991 字,大约阅读时间需要 3 分钟。

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

输入格式:

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

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

输出格式:

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

输入样例:
33 99 87 1014 87 101 5 877 99 101 18 5 135 18 9921 21 3
输出样例:
50.00%33.33%

题意

如上

题解

代码有解释

代码

1 #include
2 #include
3 using namespace std; 4 5 int main(){ 6 int n,k,a; 7 set
> se[51];//不重复并且已经从小到大排序 8 9 scanf("%d",&n);10 for(int i=1;i<=n;i++){11 scanf("%d",&k);12 for(int j=0;j
::iterator it=se[b].begin();it!=se[b].end();it++){24 if(se[c].find(*it)!=se[c].end())//find为二分 25 Nc++;26 }27 Nt=se[b].size()+se[c].size()-Nc;//b的个数-c的个数-相同的(重复的) 28 printf("%.2f%%\n",Nc*1.0/Nt*100);29 }30 return 0;31 }

转载于:https://www.cnblogs.com/taozi1115402474/p/8351358.html

你可能感兴趣的文章
Oracle命令--创建表空间、创建临时表空间、创建用户
查看>>
poj2187 Beauty Contest
查看>>
iOS开发之使用XMPPFramework实现即时通信(一)
查看>>
CentOS 6.5(x86_32)下安装Oracle 10g R2
查看>>
C语言学习总结(三) 复杂类型
查看>>
HNOI2018
查看>>
【理财】关于理财的网站
查看>>
Ubunt中文乱码
查看>>
《当幸福来敲门》读后
查看>>
【转】系统无法进入睡眠模式解决办法
查看>>
省市县,循环组装,整合大数组
查看>>
python--闭包函数、装饰器
查看>>
Phpstorm中使用SFTP
查看>>
stm32中字节对齐问题(__align(n),__packed用法)
查看>>
like tp
查看>>
使用 github Pages 服务建立个人独立博客全过程
查看>>
posix多线程有感--线程高级编程(线程属性函数总结)(代码)
查看>>
spring-使用MyEcilpse创建demo
查看>>
DCDC(4.5V to 23V -3.3V)
查看>>
kettle导数到user_用于left join_20160928
查看>>