Problem G: 计算数组的相似度
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 1955 Solved: 584
[Submit][Status][Web Board]
Description
Jaccard系数主要用于计算个体间的相似度。对于两个集合A、B,定义其相似度为:
现在,输入两个集合,求它们的相似度。
Input
分为两行,每行表示一个集合,每行以0表示输入结束。由于是集合,所以每行输入的数据都是两两相异的。每个集合最多有1000个元素。
Output
一个用百分数表示的相似度。保留2位小数。
Sample Input
1 2 3 4 5 6 7 8 9 10 0
1 2 3 4 5 0
Sample Output
50.00%
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int a[1001],b[1001],i = 0,j = 0,k = 0,m = 0,count = 0,sum = 0,num1,num2;
while(scanf("%d",&a[i])!=EOF)
{
if(a[i]==0)
break;
else
i++;
}
while(scanf("%d",&b[j])!=EOF)
{
if(b[j]==0)
break;
else
j++;
}
if(i==0&&j==0)
printf("%lg%%\n",100.0);//要输出%,得打两个%
else
{
for(k=0;k<i;k++)
for(m=0;m<j;m++)
{
if(a[k]==b[m])
{
count++;
}
}
sum = count;
}
num1 = sum;
num2 = i + j - num1;
printf("%lg%%\n",(double)num1/num2*100.0);
}